preg_replace Problem
Jenny
- php
Hallo Leute!
wie zum Teufel ... - sorry, ich werd noch wahnsinnig mit dem preg_replace!
Hab bei google was gefunden um aus HTML-Quelltext bestimmte Textstellen/Wörter ersetzen zu lassen und krieg das nicht umgebaut, damit das auch mit plain-Text läuft:-)
Das is das Original
$text_neu=array(
'blau'=>'grün',
'Stuhl'=>'haus',
'ich'=>'du'
);
$neu=preg_replace('/>([^<]+)</e',"'>'.strtr('$1',$text_neu).'<'",$alt);
Habs so versucht:
$neu=preg_replace(',"''.strtr('$1',$text_neu).''",$alt);
aber das läuft nicht.
Wie geht das, damit nur ganze Wörter mit Berücksichtigung der Groß/kleinschreibung ersetzt werden?
Wär suuuuper nett, wenn jemand Rat weiß - das PHP-Manual schnall ich nicht :-)
Eure Jenny
Hi,
Hab bei google was gefunden um aus HTML-Quelltext bestimmte Textstellen/Wörter ersetzen zu lassen und krieg das nicht umgebaut, damit das auch mit plain-Text läuft:-)
und Du hast natürlich sofort in der PHP-Doku nachgelesen, was die Dir bis dahin unbekannte Funktion strtr() macht. Aus diesem Grund verstehe ich Deine Frage nicht...
Cheatah
Hallo Cheatah!
strtr() ist mir schon klar, aber nicht die preg_replace-Funktion.
Mit der Version, dioe ich in Google gefunden habe, werden nur Worte zwische > und < berücksichtigt.
Die würde ich gerne aufheben und die > bzw < durch Leerzeichen " " ersetzen, damit im Plain-Text immer nur ganze Worte ersetzt werden.
Oder kannst Du mir sagen wie es anders geht, dass immer nur ganze Worte und keine Silben ersetzt werden?
Vielen Dank, Jenny
Hi,
Mit der Version, dioe ich in Google gefunden habe, werden nur Worte zwische > und < berücksichtigt.
nein; _Muster_ zwischen den spitzen Klammern. Ob es sich dabei um Worte handelt, ist abhängig davon, was in Deinem Array steht.
Die würde ich gerne aufheben und die > bzw < durch Leerzeichen " " ersetzen,
Dann frage ich mich, weshalb Du das nicht einfach gemacht hast, anstatt die RegExp komplett umzubauen.
Oder kannst Du mir sagen wie es anders geht, dass immer nur ganze Worte und keine Silben ersetzt werden?
Wenn Du damit fragen möchtest, wie das Symbol für eine Wortgrenze lautet: \b :-) Denke daran, dass in PHP RegExp innerhalb von Anführungszeichen stehen, und dabei die hierin gültigen Regeln für das Maskieren bestimmter Zeichen gelten.
Cheatah
$neu=preg_replace(',"''.strtr('$1',$text_neu).''",$alt);
uiuiui das ist aber leicht wild ich versuche das mal zu übersetzen
$neu = preg_replace_all('/[fehlt bei dir ganz]/',strtr($1,$text_neu),$alt);
aber ich glaub auch nicht das wird so alles nix ...
probier mal das:
$text_neu[0][0] = 'blau';
$text_neu[0][1] = 'grün';
$text_neu[1][0] = 'Stuhl';
$text_neu[1][1] = 'haus';
$text_neu[2][0] = 'ich';
$text_neu[2][1] = 'du';
$neu=preg_replace_all('/<.+?>/m',' ',$alt); // entfernt html-tags
$neu=preg_replace_all('/ +/',' ',$neu); //entfernt doppelte
//leerzeichen ggf. auschalten
$neu=strtr($neu,$text_neu); // wörter auswechseln
cu - flufo
ps: getestet hab ichs aber nicht