Mailinglisten-Archive |
> Hi,
Hi
> -----------------------------8<----------------------------------------
> $s = "foo";
> $t = "<a href=\"foo.php\">foo</a>foo";
> $r = "bar";
> preg_replace ("/(<\/?)(\w+)([^>]*>)/e",
> "'\\1'.strtoupper('\\2').'\\3'",
> $t);
> echo htmlspecialchars($t)."\n";
> // $s in $t durch $r ersetzen:
> preg_replace("/((<[^>]*)|$s)/e", '"\2"=="\1"? "\1":"$r"', $t);
> echo $t."\n";
> // $s case-insensitive in $t hervorheben:
> preg_replace("/((<[^>]*)|$s)/ie", '"\2"=="\1"? "\1":"<b>\1</b>"', $t);
> echo $t."\n";
> ----------------------------------->8----------------------------------
Hab mich mit einem ganz ähnlichen Problem neulich rumgeschlagen und auch
eine fast perfekte Lösung gefunden ;-)
function replace($string,$words,$replacer)
{
$words = explode(',',$words);
$temp = array();
foreach($words as $word) {
$temp[] = preg_quote(trim($word));
}
$words = implode('|',$words);
$string = '>'.$string.'<';
$string = preg_replace('#((?<=\>)[^\>\<]*?)('.$words.')([^\>\<]*?(?=\<))#i
s','\1'.$replacer.'\3',$string);
$string = substr($string,1,-1);
return $string
}
$s = "foo";
$t = "<a href=\"foo.php\">foo</a>foo";
$r = "bar";
replace($t,array($s),$r);
wenn z.B. $r = '<b>\2</b>'; gemacht wird, dann werden die gefundenen Wörter
bold gemacht ;-)
> cya later
> Stephan
Wenn jemand eine elegantere Lösung kennt bitte posten ;-)
Gruss
Andreas Lange
--
Haas Media GmbH | Phone +49(0)511 27038-70
Agentur für moderne Medien | Fax +49(0)511 27038-69
Hindenburgstrasse 38 | Web http://www.haas-media.de/
30175 Hannover | Mail andreas.lange_(at)_haas-media.de
Deutschland/Germany | PGPFP 4204 C703 2D73 58DA F75B C1F2 E524 6949
php::bar PHP Wiki - Listenarchive