-
Stringproblem
Ich habe ein Problem mit einem String (o'donnell), der über ein Formular (variable) reinkommt und z.B. von \Input::get verarbeitet wird:
PHP-Code:
$string1 = \Input::get('variable');
$string2 = "o'donnell"; // im PHP-Skript (UTF8)
Das Problem: beide Strings sind unterschiedlich! Ich habe beide Strings durch eine Funktion geschickt:
PHP-Code:
function Bytes($str)
{
for ( $pos=0; $pos < strlen($str); $pos ++ ) {
$byte = substr($str, $pos);
echo 'Byte ' . $pos . ' von $str hat den Wert ' . ord($byte) . '<br>';
}
}
Ergebnis für $string1:
HTML-Code:
Byte 0 von $str hat den Wert 111
Byte 1 von $str hat den Wert 39
Byte 2 von $str hat den Wert 100
Byte 3 von $str hat den Wert 111
Byte 4 von $str hat den Wert 110
Byte 5 von $str hat den Wert 110
Byte 6 von $str hat den Wert 101
Byte 7 von $str hat den Wert 108
Byte 8 von $str hat den Wert 108
Ergebnis für $string2:
HTML-Code:
Byte 0 von $str hat den Wert 111
Byte 1 von $str hat den Wert 38
Byte 2 von $str hat den Wert 35
Byte 3 von $str hat den Wert 51
Byte 4 von $str hat den Wert 57
Byte 5 von $str hat den Wert 59
Byte 6 von $str hat den Wert 100
Byte 7 von $str hat den Wert 111
Byte 8 von $str hat den Wert 110
Byte 9 von $str hat den Wert 110
Byte 10 von $str hat den Wert 101
Byte 11 von $str hat den Wert 108
Byte 12 von $str hat den Wert 108
D.h. aus dem Hochkommata (39) werden 5 Zeichen: 38, 35, 51, 57 und 59. Mit utf8_encode und utf8_decode habe ich es schon versucht. $string2 bleibt immer unverändert. Was könnte ich noch machen, um $string2 an $string1 anzugleichen?
-
Die 5 Zeichen, die Du findest sind wahrscheinlich &# zwei Ziffern und ein ; die das Entity für den Apostroph darstellen, den Contao wg. Inputencoding erzeugt. In Contaos StringUtils sollte es Hilfsfunkionen geben, um das wieder rückgängig zu machen.
-
Danke. In die Richtung habe ich auch schon gedacht.
PHP-Code:
$string2 = html_entity_decode($string2); // Führt nicht zum Erfolg, es wird nichts dekodiert
$string2 = html_entity_decode($string2, ENT_QUOTES | ENT_XML1, 'UTF-8'); // Führt zum Erfolg
Damit habe ich jetzt endlich eine Lösung.