phpbar.de logo

Mailinglisten-Archive

[php] preg_replace | strings

[php] preg_replace | strings

Olaf Gleba list at creatics.de
Don Jan 29 18:52:43 CET 2004


hallo,

vielleicht hat ja jemand offenere Augen.

Ich habe in diesem speziellen Fall nur die M�glichkeit, dem CMS zu sagen,
jage bitte alles durch eine Funktion, die alles relevanten Zeichen mit
htmlspechialchars bearbeitet - oder eben nicht (1 = ja|0 = nein).

Also im einfachsten Fall:
funktion html($string)
{
return htmlspechialchars($string);
}


Da ich aber spezielle, mit [c]xxx[/c] umschlossene hrefs, jeweils parsen
oder auch nicht parsen m�chte, muss ich mir was einfallen lassen.

Ich poste nur den relevanten Teil der Funktion:

Es soll alles ersetzt werden - au�er die ausgezeichneten Stellen; die sollen
als hrefs vorhanden bleiben.
         
// Erst alles wandeln, da ich diese als return sp�ter brauche
$string = htmlspecialchars($string);
             
// Die relevanten Teile rausholen
preg_match("/(\[c\])(.*)(\[\\/c\])/", $string, $matches);
                   
// Die Pattern...
 $search = array("'<'","'>'","'"'",
"'\[c\]'","'\[/c\]'","'&'");
 
$replace = array("<",">","\"","","","&");
 
//Den Inhalt der Ergebnisstrings wieder in einfache Zeichen wandeln
$text = preg_replace($search, $replace, $matches[0]);
 
$erg = $matches[0];
           
// Die vormals gefunden Teile ($matches[0] jetzt $erg) durch das Ergebnis
aus dem letzten preg_replace ersetzen; Vorkommen in der var $string; und das
Ergebnis zur�ckgeben.

return preg_replace($erg, $text, $string);

[/...]

Genau das letzte funktioniert aber nicht. Ich bekomme Fehlermeldungen, das
nicht erlaubte Delimiter gefunden werden.
Ich habe schon versucht, mit den verschiedensten Quotes rumzumachen, um dem
letzten preg_replace klar zu machen, das er die Pattern als "nur-strings"
ansehen soll, komme hier aber auch nach l�ngerem Versuchen zu keinem
Ergebnis. Einzeln ($text, $string, $erg) bekomme ich alles raus,- nur will
ich nat�rlich nicht die ersetzten Strings und gleichzeitig deren nicht
bearbeitet Pendants haben...

Ist der Weg grunds�tzlich falsch oder wo k�nnte mein Fehler liegen ?

Danke schon jetzt!
gruss
Olaf


-- 
Olaf Gleba | creatics media&systems
http://www.creatics.de | mailto:og at creatics.de



php::bar PHP Wiki   -   Listenarchive