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