str_replace und Anführungszeichen...

tomate

Erfahrenes Mitglied
Hallo zusammen,

ich möchte mit Hilfe von str_replace aus
HTML:
<font color="red">Text</font>
dieses
HTML:
<span style='color: red'>Text</span>
machen.


Mit Hilfe von
PHP:
$artikel = str_replace('<font color="red">', "<span style='color: red'>", $artikel);
geht es leider nicht, da die Anführungszeichen nicht erkannt werden.

Die doppelten Anführungszeichen kann ich auch nicht gegen einfache austauschen.

Kann mir da jemand weiterhelfen?

Viele Güße!
Tomate
 
Hi,

hast Du mal
PHP:
$artikel = str_replace("<font color=\"red\">", "<span style='color: red'>", $artikel);
versucht?

MArc
 
Habe es mal schnell über den Compiler laufen lassen und hatte keinerlei Probleme. Eventuell sollte das Ini-Flag "magic quotes" nochmal überprüft werden, ob sich nicht vielleicht noch zusätzliche Escape-Sequenzen eingeschleust haben.

Eine alternative und schönere Lösung, die man beliebig ausbauen und flexibel machen kann:

PHP:
preg_replace('=<font color\="([^\"]*)">(.*)</font>=Uis', '<span style="color: \1">\2</span>', $string)
 
preg_replace ist natürlich deutlich eleganter.
Danke für das Beispiel.

Funktionieren tut es trotzdem nicht.
Ich habe aber gerade festgestellt, dass es nur im FF nicht geht.
Mit dem IE geht es.

Kann es daran liegen ,dass diese Daten zuvor per $_POST übergeben werden?

Gruß!
Tomate
 
PHP: serverseitig
Browser: clientseitig

Eigentlich ist es nicht möglich, einen php internes Problem auf den Client zu reflektieren. Wenn du die Daten via request (post, get, ...) verarbeitest, solltest du die PHP ini Direktive "magic quotes" überprüfen. Zusätzlich kannst du dir auch mal den String vor der Verarbeitung via [phpf]var_dump[/phpf] ausgeben lassen - Könnte fast schon sein, dass der Compiler die Strings escaped und somit zB 'ein Anführungszeichen\"' rauskommt. Das kann dann natürlich nicht mehr korrekt verarbeitet werden.
 
"var_dump()" hat mir sehr geholfen.
Mit Hilfe von "stripslashes" habe ich die escapezeichen entfernt.
Jetzt klappt es auch mit dem Ersetzen.

Vielen Dank für die Hilfe!
Tomate
 
Zurück