1Danke
ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
385
385
EMPFEHLEN
-
Hallo !
Ich skripte gerade an einer php Datei herum, die POST Daten von einem Computerprogramm beim Aufruf übergeben kriegt.
Ich kriege die POST Daten in meinem Script, dekodiere sie mit urldecode und danach mit html_entity_decode und verarbeite sie.
Das funktioniert auch soweit ganz gut, bis ich auf Umlaute treffe. Diese sind nämlich nicht mit ü ä und so weiter kodiert, sondern auf solche Art und Weise: ö ü ä.
Der Browser zeigt die richtigen Buchstaben an, also wird daran wohl nichts falsch sein, aber die Daten sollen in eine Datenbank eingefügt werden und da kann ich die Kodierung so garnicht gebrauchen.
Weiß jemand, wie man die wieder umgewandelt kriegt ?
html_entity_decode scheint nicht zu funktionieren.
-
30.08.10 14:05 #2
- Registriert seit
- Apr 2009
- Ort
- Düsseldorf (NRW)
- Beiträge
- 508
Versuchs mal mit htmlentities()
-
Bei der Geschichte wirst du mit htmlentities denk ich mal nicht weit kommen, denn hier handelt es sich um Dezimalwerte eines ASCII-Zeichens, womit PHP meines Wissens nach nicht umgehen kann.
Da wird dir wohl "preg_replace" bzw. "str_replace" nicht erspart bleiben.
Wenn du dir daraus eine Funktion basteltst ist es wieder komfortabel
.
Hier mal noch eine Tabelle der ASCII-Zeichen: ASCII.Mfg, Alex
“The function of good software is to make the complex appear to be simple.” (Grady Booch)
“First, solve the problem. Then, write the code.” (John Johnson)
-
30.08.10 15:06 #4
- Registriert seit
- Apr 2009
- Ort
- Düsseldorf (NRW)
- Beiträge
- 508
Den Ursprungsstring kann man allerdings damit behandeln, so werden die Entitäten ü etc. gesetzt statt deren Dezimalentitäten.
Wenn man die Dezimalentitäten umwandeln will, kommt man um deine Methode natürlich nicht rum.
-
Hi !
Und danke für die Antworten.
Den Ursprungsstring mit htmlentities zu verschlüsseln ist an sich eine prima Idee, das Problem dabei ist nur, dass ich die Post Daten nicht von einem anderen php Skript übergeben kriege, sondern von einem Programm das ich nicht geschrieben habe.
Laut Dokumentation soll diese Postdaten zuerst url-dekodiert und danach die Entities aufgelöst werden. Nur leider haben die Daten keine html entities sondern den diese ANSI Kodierung.
Ich hab auch schon an str_replace gedacht, der Nachteil daran ist dass die Post Daten auch ein Freiform Textfeld enthalten. Wenn ich also str_replace nehme, dann müsste ich jede mögliche Variante berücksichtigen...
Aber es gibt bestimmt eine Art char(int) Funktion in php mit der man Zahlencodes in die entsprechenden Buchstaben umwandeln kann. Ich werd versuchen, den Text zu parsen, den Zahlencode auszulesen und dann entsprechend umzuwandeln.
Ich meld mich, wenn es geklappt hat.
-
Kurze Frage: Warum sollen die Kodierungen so nicht in die Datenbank übernommen werden?
Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!
-
Hi !
Das ist ganz einfach. Das System in das importiert werden soll ist ein Extranet für unsere Kunden. Die Daten, die importiert werden, sind Statistik und Lagerbestände und so ein Zeug.
Nun gibt es dort teilweise Stringverknüpfungen. Zum Beispiel wenn ein Kunde wissen will, was diese Woche alles in die "Müllergasse" geliefert wird. Und naja... "Müllergasse" != "Müllergasse"
Außerdem sollte eine html Kodierung IMHO erst dann geschehen, wenn notwendig.
Ich hab jetzt folgende Lösung:
EDIT: Verdammt ! Toll, man sieht jetzt im Beispielstring $zeichenkette nicht, dass da die kodieren ANSI Zeichen drin sind, weil der Browser die direkt umsetzt. -.-PHP-Code:<?php
$zeichenkette = "Das ist die Beschriftung eines Überschallflugzeugs.";
$suchmuster = '/&#(\d{1,3});/';
$ersetzung = "$1";
function callback($treffer)
{
return chr($treffer[1]);
}
// Ausgabe: Das ist die Beschriftung eines Überschallflugzeuges
echo preg_replace_callback($suchmuster, callback, $zeichenkette);
?>Geändert von RedWraith (31.08.10 um 10:32 Uhr)
-
Grüße,
also ich hab mir da mal inzwischen ne kleine Funktion gebastelt:
PHP-Code:<?php
function Zeichenersetzung ($Zeichenkette) {
$Suchen = array("/Ä/", "/Ö/", "/Ü/", "/ä/", "/ö/", "/ü/");
$Ersetzen = array("Ä", "Ö", "Ü", "ä", "ö", "ü");
$Ausgabe_Zeichenkette = str_replace($Suchen, $Ersetzen, $Zeichenkette);
return $Ausgabe_Zeichenkette;
}
?>
So wie das jetzt da oben steht ist das natürlich Quatsch, denn de gute Technik wandelt meinen Code-Post hier schon so um , wie du das auch machen willst
.
Also im Array Suchen kommen die Dez-Werte rein, die die vom Programm übergebene Zeichenkette in sich tragen kann:
Ä --> Ä,
Ö --> Ö,
Ü --> Ü,
ä --> ä,
ö --> ö,
ü --> ü
Dann rufst du die Funktion einfach auf der Zuweisungsseite einer Variablen auf und kannst dann mit dieser Variablen weiterarbeiten (Bsp. als String benutzen, der in die DB soll):
Ich hab das ganze auch mit der "Müllerstraße" ausprobiertPHP-Code:<?php
$test = Zeichenersetzung($Zeichenkette_an_Funktion);
?>
.
Mfg, Alex
“The function of good software is to make the complex appear to be simple.” (Grady Booch)
“First, solve the problem. Then, write the code.” (John Johnson)
-
Moin,
das ist eigentlich merkwürdig, html_entity_decode() sollte auch mit Notationen wie ü umgehen können. Mit welchen Zeichensätzen arbeitest du da?
-
Das ist wieder das typische Problem, dass bei denen einer die Regeln von relationalen Datenbanken missachtet hat :-PNun gibt es dort teilweise Stringverknüpfungen. Zum Beispiel wenn ein Kunde wissen will, was diese Woche alles in die "Müllergasse" geliefert wird. Und naja... "Müllergasse" != "Müllergasse"
Ich würde die Sache so angehen, dass ich versuchen würde, alles in UTF-8 umzustellen. Wenn du allerdings keine Möglichkeit hast, an der Datenbank was zu ändern, dann wirst du um die unschönen Basteleien nicht rumkommen...
Wie Sven Mintel schon gemeint hat, müsste das aber mit html_entity_decode() klappen. Und falls nicht, ist im 1. Beispiel eine Workaround beschrieben.
Grüße,
FrezlWenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!
Ähnliche Themen
-
Post-Daten abfragen?
Von DataFox im Forum Javascript & AjaxAntworten: 8Letzter Beitrag: 03.01.08, 15:50 -
Problem mit POST-Daten
Von miRli im Forum PHPAntworten: 2Letzter Beitrag: 30.08.05, 16:24 -
POST - Daten / Aktualisieren
Von Eaden im Forum PHPAntworten: 2Letzter Beitrag: 19.04.05, 14:44 -
POST-Daten per Adresszeile
Von MAN im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 27.02.05, 04:01 -
POST Daten per URL uebergeben?
Von BeaTBoxX im Forum PHPAntworten: 1Letzter Beitrag: 03.05.04, 13:33





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren