ereg_replace

lll192837465lll

Erfahrenes Mitglied
Hallo Zusammen

Ich habe die Funktion ereg_replace gefunden. Jetzt frage ich mich, warum mein Code nicht geht :(

PHP:
$postedValue = ereg_replace("<span style=\"color: rgb(153, 51, 0);\"","<font color=\"#5b5b00\">",$postedValue);
$postedValue = ereg_replace("</span>","</font>",$postedValue);

$postedValue ist die Variable, welche für den Eingabetext eines wysiwyg editor steht.

Es funktioniert nicht und die ausgabe bleibt immernoch
PHP:
$postedValue = ereg_replace("</span>","</font>",$postedValue);

Und ja ich weiss dass der Effekt dasselbe auswirkt, aber ich brauche die formation so, da es anders nicht angezeigt wird. :rolleyes:

Danke!
 
in Javascript sind die reg expressions so dass man das mit slashes links und rechts machen muss und ein kleines "g" dran hängen damit es global ersetzt wird und nicht nur das erste. Dies ist nur ne schnelle Antwort als Gedanken anstoß ich guck noch mal auf php.net nach kannst du mehr informationen hergeben. Z.B. ob und welchen fehlermeldung erscheint?...

MFG
Mark Paspirgilis
 
Danke Dir für die Antwort.

In der Zwischenzeit habe ich erfahren, dass es denke ich an der Darstellung liegt. Bei
PHP:
$postedValue = ereg_replace("span","font",$postedValue);
Funktionierts, aber bei
PHP:
$postedValue = preg_replace("style=\"color: rgb(153, 51, 0);\">","color=\"#5b5b00\">",$postedValue);
Stimmts nicht. Und zwar kommt der Fehler:

Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in ... on Line 40

Line 40:
PHP:
$postedValue = preg_replace("style=\"color: rgb(153, 51, 0);\">","color=\"#5b5b00\">",$postedValue);

Ich hab gegoogelt und ich glaube fast das liegt an irgendeinem Sonderzeichen welches irgendwie nicht will. Aber darum schreib ich ja hier.

Ach ja für was ich das machen will:

Ich mache eine Flashwebsite, welche die Informationen durch XML einliest. Bei mir liest sie das durch ein php-file ein, welches im Quellcode ein xml-file generiert. Das wird aus einer DB gelesen. In die DB kommt dann der formatierte html code rein. Flash kann aber leider nur den alten "Farben-Code" mit Font darstellen. Aber bitte alle Fragen dazu per PN... Danke!
 
Danke Gumbo!

Jetzt verstehe ich warum es nicht funktioniert. Aber wo und vorallem Wie kann ich es fixen? sagen wir, ich will jetzt die () richtig darstellen lassen, wie mus ich diese jetzt versehen, dass sie richtig stehen? also mit
PHP:
/(153, 51, 0)/
funktioniert das nicht :confused:
 
Hi,

außerdem müsstest Du auch die runden Klammern mit einem Backslash maskieren, da diese in regulären Ausdrücken eine spezielle Bedeutung haben.

So, wie Du das machst, frage ich mich allerdings, warum Du überhaupt ereg_replace oder preg_replace benutzt. Ich sehe dort kein Suchmuster, da reicht ein simples str_replace.

Wenn Dir die Farben allerdings vorher nicht bekannt sind, wirst Du Dir einen regulären Ausdruck basteln müssen und eine Funktion, die den Hex-String berechnet. Dann wäre preg_replace_callback ein Kandidat oder wahlweise die Verwendung des Modifiers 'e'.

LG
 
Hi,

außerdem müsstest Du auch die runden Klammern mit einem Backslash maskieren, da diese in regulären Ausdrücken eine spezielle Bedeutung haben.

So, wie Du das machst, frage ich mich allerdings, warum Du überhaupt ereg_replace oder preg_replace benutzt. Ich sehe dort kein Suchmuster, da reicht ein simples str_replace.

Wenn Dir die Farben allerdings vorher nicht bekannt sind, wirst Du Dir einen regulären Ausdruck basteln müssen und eine Funktion, die den Hex-String berechnet. Dann wäre preg_replace_callback ein Kandidat oder wahlweise die Verwendung des Modifiers 'e'.

LG

Wie müssten dann die Klammern mit dem / markiert werden? So wie ich's gequotet habe gehts nicht. Ausserdem klappts auch nicht mit str_replace, habs gerade nochmal versucht. Das mit den Farben sollte kein Problem sein, aber Danke. Ich hoffe ich habe bald eine Lösung :(
 
Hi,

Du musst die Klammern mit einem Backslash maskieren (=> \), nicht mit einem Slash.
Zeige mal Deinen Versuch mit str_replace. Das sollte nämlich kein Problem sein.

LG
 
PHP:
$postedValue = ereg_replace("style=\"color: rgb\(153, 51, 0\);\"","color=\"#5b5b00\"", $postedValue);
Das funktioniert genau so wenig wie das:
PHP:
$postedValue = ereg_replace("style=\"color: rgb(153, 51, 0);\"","color=\"#5b5b00\"", $postedValue);
und wenn ich es mit str_replace mache dann geht es auch nicht, respektiv, es zeigt mir einfach alles normal und nichts ersetzt aus == er findet das gesuchte nicht.
PHP:
$postedValue = str_replace("style=\"color: rgb\(153, 51, 0\);\"","color=\"#5b5b00\"", $postedValue);
 
Zurück