Suchbegriff nicht innerhalb von Tags ersetzen
Blizzard
- perl
Hallo,
Ich hab ein Problem mit preg_replace(); bei meiner php-Suchfunktion.
Ich möchte den Suchbegriff fett drucken, allerdings nicht innerhalb von Tags.
Jetzt such ich eine Möglichkeit das Problem elegant mit einem regulären Perl Ausdruck zu lösen, da ich meine Lösung mit substrings recht umstädnlich finde.
preg_replace("/(>.*?)$search(.*?<)/i", "$1<b style='color: #FFE623;'>$search</b>$2', $text);
Das klappt allerdings nicht wirklich.
Beispiel: x1 <img x2>
-> nur x1 soll ersetzt werden.
Hallo,
es geht auch ohne reguläre Ausdrücke:
$t=explode('<',$t);
foreach($t as &$v){
$v=explode('>',$v);
if(count($v)==2){
$v[1]=str_replace($search,"<b style='color:#FFE623'>$search</b>",$v[1]);
$v=implode('>',$v);
}
}
$t=implode('<',$t);
...recht umstädnlich...
Das ist (völlig unerhebliche) Ansichtssache.
Gruß aus Berlin!
eddi
gudn tach!
Ich hab ein Problem mit preg_replace(); bei meiner php-Suchfunktion.
nur am rande: es waere besser gewesen, als themenbereich "PHP" auszuwaehlen. so 100%-ig sind die PHP-preg-ausdruecke naemlich gar nicht kompatibel zu perl.
Ich möchte den Suchbegriff fett drucken, allerdings nicht innerhalb von Tags.
da die frage hier vor kurzem gestellt wurde, habe ich sogar noch die entsprechende faq-seite der ng comp.lang.php.* im browser-cache:
"Wie ersetze ich in einem Text, jedoch nicht innerhalb von HTML-Tags?"
die methode von XaraX funzt aber auch und ist evtl. sogar schneller(?)
prost
seth
gudn tach!
Ich hab ein Problem mit preg_replace(); bei meiner php-Suchfunktion.
nur am rande: es waere besser gewesen, als themenbereich "PHP" auszuwaehlen. so 100%-ig sind die PHP-preg-ausdruecke naemlich gar nicht kompatibel zu perl.
Ich möchte den Suchbegriff fett drucken, allerdings nicht innerhalb von Tags.
da die frage hier vor kurzem gestellt wurde, habe ich sogar noch die entsprechende faq-seite der ng comp.lang.php.* im browser-cache:
"Wie ersetze ich in einem Text, jedoch nicht innerhalb von HTML-Tags?"die methode von XaraX funzt aber auch und ist evtl. sogar schneller(?)
prost
seth
Danke für den Link :)
Bei kurzen Suchergebnissen benötigt das Script mit dem Preg-Ausdruck nur 0.003s, statt ca 0.025s mit einer explode-Methode.
Gibt es sehr viele Suchergebnisse (zB bei Suchbegriff 'a') ist die explode-Methode ~0.01s schneller.
Ich nehm aber trotzdem den Preg-Ausdruck :)
Nochmal danke an seth und XaraX
Blizzard