Wörter filtern die nicht in einem Link sind;regexp
Jan Entzminger
- php
Hi. Ich will in einem Volltext alle vordefinierten Wörter durch den Text Fred ist doof ersetzen. Dies soll aber nur passieren wenn die gesuchten Wörten nicht zwichen einem Link, also <a und a> stehen. Hab folgenden Regexp verwenden wollen. Klappt aber leider nicht. Kann mir jemand weiterhelfen. Danke.
$search_pattern='/[^<][^aA][^.*]\b'.$glossary_word.'\b[^.*][^aA][^>]/';
$replace_pattern='Fred ist doof';
$html='Hier steht der Volltext in dem gesucht werden soll';
$html = preg_replace ($search_pattern, $replace_patterm, $html, 1);
Gruß Jan Entzminger
Hi,
Hab folgenden Regexp verwenden wollen. Klappt aber leider nicht.
die Komplexität Deines Problems übersteigt die Möglichkeiten von Mustern. Parse den String.
Cheatah
Guten Tag,
Hi. Ich will in einem Volltext alle vordefinierten Wörter durch den Text Fred ist doof ersetzen.
Dies soll aber nur passieren wenn die gesuchten Wörten nicht zwichen einem Link, also <a und a> stehen.
Wenn ich's recht verstanden habe, könntest Du's vielleicht mal
so probieren:
<?
$htm = "qörgl baloba, rintintin
nargcks <a href='http://www.zuppa_pavese.htm'>zuppa_pavese</a> globsch
zuppa_pavese zwittscher <a href='http://www.wunz.txt'>wunz</a> uiouiouio
lölö wunzwunz müppl
baloba qwerqwer rintintin ölöl
<a href='http://www.rintintin.htm'>rintintin</a>
rintintin
";
$w = '(zuppa_pavese|wunz|baloba|rintintin|o)';
$r = 'Fred ist doof';
$a = '</[aA]>';
print '<pre>';
print $htm."\n";
print preg_replace("/$w(?!$a|[^<>]+(>|$a))/", $r, $htm);
print '</pre>';
?>
gruß
werndt
Nachtrag
Ich habe die Möglichkeit nicht bedacht, daß innerhalb eines tags
Attributen Worte aus der Wortliste zugewiesen sein können, zB:
<tt id='baloba' onclick='rintintin()'>baloba</tt>
Folgende regex ersetzt auch das:
"/$w(?![^<>]*(>(?=[^<]+$a)|$a))/"
gruß
werndt