Php str_replace funktioniert nicht mit Sonderzeichen
warum ist das nicht wie erwartet funktioniert:
echo str_replace("é","é","Fédération Camerounaise de Football");
Ergebnis:
"Fédération Camerounaise de Football"
ich bin erwartet zu haben:
"Fédération Camerounaise de Football"
wieso der downvote ?
Das problem hier ist die Zeichencodierung nicht
ok und was soll ich tun ?
Ich denke, das ist eine Mehrbyte-Problem, in dem Fall versuchen Sie es mit entweder
Richten Sie Ihre Sachen richtig (ich bin zu Ahnen, Sie haben eine UTF-8 Datenbank-Verbindung und ISO-8859 - /lateinische Ausgabe) oder Durcheinander herum mit
Das problem hier ist die Zeichencodierung nicht
str_replace()
...ok und was soll ich tun ?
Ich denke, das ist eine Mehrbyte-Problem, in dem Fall versuchen Sie es mit entweder
mb_ereg_replace()
oder mb_ereg_replace()
.Richten Sie Ihre Sachen richtig (ich bin zu Ahnen, Sie haben eine UTF-8 Datenbank-Verbindung und ISO-8859 - /lateinische Ausgabe) oder Durcheinander herum mit
utf8_decode()
, mb_convert_encoding()
oder iconv()
.
InformationsquelleAutor Rachid Oussanaa | 2014-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du etwas falsch. Dieser string ist nicht falsch und ersetzt werden muss, ist es einfach mit UTF-8 codiert.
Alles, was Sie tun müssen, ist
utf8_decode('Fédération Camerounaise de Football')
.Update:
Sehen Sie
Fédération Camerounaise de Football
als Ausgabe, weil Sie doppelt sind, indem Sie Ihre Daten in UTF-8.Beobachten:
file1.php gespeichert in UTF-8-format:
Ausgabe:
Nun, wenn Sie sagen, dass der von Ihnen verwendete browser UTF-8, es sollte zeigen Sie den Inhalt direkt:
file2.php gespeichert in UTF-8-format:
Ausgabe:
Perfekt.
Howover, machst du alles noch schlimmer. Sie haben ein UTF-8 kodierter string, und kodiert es wieder, und schreiben Sie diesen auf eine UTF-8 codierte Datei.
file3.php gespeichert in UTF-8-format:
Ausgabe:
Was für ein Durcheinander. Wir machen es schlimmer, indem Sie sehen, wenn wir können dieses Problem beheben, mit
str_replace
:file4.php gespeichert in UTF-8-format:
Ausgabe:
Wie Sie sehen können, haben wir "Feste". Art. Das ist, was Sie tun. Sie verwandeln
é
iné
, auch wenn Sie nicht sehen, dieses, weil Ihr editor nicht lassen Sie sehen, die real-Symbole hinter der Codierung, aber der browser tut.Lassen Sie uns versuchen, diese wieder mit ASCII:
file5.php im ASCII-format gespeichert:
Ausgabe:
Magie! Der browser hat alles jetzt. Aber was ist die wirkliche Lösung? Gut. Wenn Sie eine Zeichenfolge hardcoded in der PHP-Datei, dann sollten Sie einfach schreiben
Fédération Camerounaise de Football
statt den Gott verdammte Ding falsch. Aber wenn Sie Holen es aus einer anderen Datei oder einer Datenbank, sollten Sie einen der beiden Kurse:Verwenden
utf8_decode()
zum transformieren der Daten Holen Sie in der von Ihnen gewünschten Ausgabe.Nicht alles transformieren und zu verwenden
header('Content-Type: text/html; charset=utf-8');
um dem browser mitzuteilen, das Sie drucken Inhalt im UTF-8 format, so zeigt es die Dinge richtig.Nein dude. Verwenden Sie nicht
str_replace
an alle!Sie sind wahrscheinlich alles noch schlimmer machen, wenn Sie hartcodieren den string in der PHP-Datei wie folgt. Die Datei selbst ist wohl auch in UTF-8 kodiert, so dass nichts funktionieren wird. Speichern Sie Sie im ASCII-wenn Sie möchten, um zu sehen, was wirklich hier Los ist.
Wenn Sie mit PHP HTML erzeugen, Sie sollten stick mit UTF-8 und senden
<meta charset="utf-8">
mit Ihrem HTML-Header statt. Nur denken Sie daran Sie haben einfach noch nicht so "fix" für diese Zeichenfolge, wenn Sie das tun.+1 die richtige Richtung
InformationsquelleAutor Havenard
//edit nach Kommentar
Fédération Camerounaise de Football
ist einUTF-8
kodierten string, so dass ich nicht weiß was input ist nichtutf-8
kodiert im Dokument, aber Sie haben zwei Optionen.Ihre Eingabe übergeben werden
str_replace
istutf-8
aber die Zeichen, die Sie verwendet haben, in den Funktionen zu ersetzen sindANSII
oder etwas anderes => funktioniert nicht - das bedeutet, Ihr Dokument wird nichtutf-8
- dies ist der Grund, warumuft8_decode
funktioniertstr_replace(ANSII, ANSII, CONVERT_TO_ANSII(UTF-8))
Ihre Eingabe ist nicht
utf-8
und Ihr Dokument ist -, so würde dies die Arbeitstr_replace(UTF-8, UTF-8, CONVERT_TO_UTF-8(ANSII))
str_replace
arbeitet mit multibyte-Zeichen - dein problem ist nicht die Funktion dessen ist, weil Sie versuchen, ersetzen Sie die verschiedenen encoding-Typen. anstelle der Verwendung einer alternativen Funktion - ich schlage vor, Sie zu beheben, die Eingabe übergeben werdenstr_replace
zuutf-8
und stellen Sie sicher, dass Ihr Dokumentutf-8
codiert zu werden.wenn deine Quelle nur die Unterstützung von nicht
utf-8
Codierung verwendenutf8_encode
konvertieren Sie Ihre Eingabe zuutf-8
http://php.net/manual/de/function.utf8-encode.php
ich erklärte meine Antwort
str_replace("é","é",utf8_encode('Fédération Camerounaise de Football")) und das Ergebnis ist "FÃÃ' ©dÃà '©ration Camerounaise de Football"
Dude, dein string ist einfach kodiert zweimal, verwenden Sie einfach
echo utf8_decode(utf8_decode('Fédération Camerounaise de Football'));
Sie werden es sehen.yep, du hast Recht !!
InformationsquelleAutor ins0
Überprüfen Sie Den folgenden Code:
Was ist das erwartete Ergebnis?
Ich habe bearbeitet den code. Überprüfen Sie jetzt denke ich, dass es Ihr Ziel erreicht
gleiche wie das, was ich habe
InformationsquelleAutor Sahriar rahman supto