Ich schreibe Glossar-Modul - es muss bekannte Wörter im Text finden und durch Link ersetzen. Es darf kein Wort ersetzen, wenn es sich um einen Link ancor (<a href="...">word</a>
) oder ein Attribut (<span class="word">...</span>
) handelt.Regex für Glossar ersetzen
Ich habe geschrieben Code:
$x = '<div>DVB-S2. DVB-S. DVB-S2DVB-S <sss DVB-S2 /> DVB-S2 <a href="dd">DVB-S2</a> DVB-S2 Hot bird 6/Hot Bird 8/Hot bird 9, 13.0</div>';
$word = 'Hot Bird 8';
$x = preg_replace("'(?<=[\s\>])(" . $word . ")(?=[^\d\w\-])(?!([^<]+)?>)'is", "<a href=\"s2\">$1</a>", $x);
$word = 'DVB-S2';
$x = preg_replace("'(?<=[\s\>])(" . $word . ")(?=[^\d\w\-])(?!([^<]+)?>)'is", "<a href=\"s2\">$1</a>", $x);
echo $x;
Aber es <a href="dd">DVB-S2</a>
zu <a href="dd"><a href="s2">DVB-S2</a></a>
ersetzen.
Wie kann ich es beheben?
ive getestet wird Ihren Code und ive bemerkt, dass die erste preg_replace nichts tut wichtig – abugnais
Mehr ist an zweiter Stelle Regex und Probleme mit dem Ankeraustausch. – gvozd1989
Möchten Sie das Original ein Tag ersetzen, wenn es existiert? – abugnais