Kann nicht entfernen von Sonderzeichen mit str_replace
Ich habe ein sehr triviales problem mit str_replace.
Ich habe einen string mit die En Bindestrich ( - ) so:
I want to remove - the dash
Die html-Ausgabe ist
I want to remove the – the dash
Ich dies tun möchten:
$new_string = str_replace ('-','',$string);
Ich habe versucht, analysiert die Zeichenfolge mit html_entity_decode, zu analysieren, die Zeichen zu entfernen, mit htmlspecialchars,aber ohne Ergebnisse.
Was ich falsch mache?
- - EDIT - -
Dies ist der vollständige code von meinem script:
$title = 'Super Mario Galaxy 2 - Debut Trailer'; //Fetched from the DB, in the DB the character is - (minus) not –
$new_title = str_replace(' - ', '', $title);
$new_title = str_replace(" - ", '', $title);
$new_title = str_replace(html_entity_decode('–'),'',$title);
Niemand arbeitet.
Im Grunde das problem ist, dass in der DB die Striche sind, werden als "minus" (ich geben Sie den Wert mit der Minustaste ( - ), aber für einen seltsamen Grund die Ausgabe ist &ndash ;
Ich bin läuft auf WordPress und das charset ist UTF-8, das gleiche für die DB-collation.
Der code, den Sie eingefügt haben funktioniert. Also ganz klar dein problem ist etwas anderes...
InformationsquelleAutor Pennywise83 | 2010-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
probieren Sie etwas wie dieses:
Meine Vermutung ist, es ist nicht wirklich eine ndash, aber einen sehr ähnlichen Charakter. Ich würde vorschlagen, ziehen die byte-Werte der einzelnen Zeichen in der Zeichenfolge, um zu sehen, wie es aussieht:
Werde, die konvertieren den string in die einzelnen byte-Kodierungen (schalten Sie es in einen hex-string wie
48 65 6C 6C 6F
(Hello
). Überprüfen, um zu sehen, der Strich wird in beiden Fällen in der Tat den gleichen Charakter. Wenn Sie sehen, "2D", wo der Strich ist, das ist ein literal minus-Zeichen,... Wenn Sie sehen, die drei-byte-SequenzE2 80 93
, das ist–
. Alles andere bedeutet einen anderen Charakter...EDIT:
Und wenn Sie sehen
26 6E 64 61 73 68 3B
dass die Herren eine wörtliche–
, so müssten Sie tunstr_replace('–', '', $str);
Gut, dann war das problem, dass Sie Ihre source-code-Datei wurde nicht eigentlich UTF-8 (das Zeichen, Das Sie dachte, war ndash etwas anderes war)..., Wenn Sie verwenden die UTF-8-Zeichensatz, immer fügen Sie die
'UTF-8'
parameterhtml(_entity_decode|entities|specialchars)
Dies hat Super geklappt, vielen Dank!
Sie haben mein Leben gerettet! Danke!
InformationsquelleAutor ircmaxell
habe ich es geschafft, dies zu tun, durch aufrufen
remove_filter( 'the_title', 'wptexturize' );
im functions.php dann führen Sie einestr_replace
oder was auch immer durch " - " - Zeichen;Fatal error: Call to undefined function remove_filter()
InformationsquelleAutor ialex
Gibt es
–
(–) und es gibt die minus - Zeichen (-). Stellen Sie sicher, dass Sie nicht versuchen, zu ersetzen, die falschen Zeichen.Wenn du meinst, eine wörtliche
–
, erste sAc-Lösung gelten soll. Sind Sie auf der Flucht Ausgabe mithtmlentities()
? Tun Sie ersetzen vor oder nach der Flucht?Nein auf beide Fragen. Es ist sehr merkwürdig. Ich werde aktualisieren Sie die OP mit den genauen code habe ich.
InformationsquelleAutor Álvaro González
Ich habe alles versucht und nichts funktionierte. aber am Ende mit der Hilfe von http://www.ascii.cl/htmlcodes.htm
dieser code funktionierte für mich
InformationsquelleAutor user2813515
Versuchen Sie dies:
Oder:
Es ist im Grunde dasselbe wie:
InformationsquelleAutor Sarfraz
Dies war meine Lösung für eine ungültige ndash:
InformationsquelleAutor Tobias
Nur diese Lösung bei mir funktioniert:
InformationsquelleAutor Simonas B.
Jeder, der versucht hat, alle der oben genannten, aber immer noch keine Freude, dann ist dies für mich gearbeitet (aus einem WordPress -
get_the_title()
Funktion)InformationsquelleAutor Rich