PHP String nur außerhalb von HTML-Tags und $$..$$ ersetzen

Snooty

Commodore
Registriert
Dez. 2012
Beiträge
4.485
Hio,

ich nutze diesen PHP-Code um Strings nur außerhalb von HTML-Tags zu ersetzen:

PHP:
// $s case-insensitive in $t hervorheben:
preg_replace("/((<[^>]*)|$s)/ie", '"\2"=="\1"? "\1":"<b>\1</b>"', $t);
(http://www.php-faq.de/q/q-regexp-ersetzen.html)

Ich müsste das ganze nun auch darauf ausweiten, Strings nicht innerhalb von $$ String $$ zu ersetzen.

Doppelte $-Zeichen werden von MathJax genutzt um Formeln innerhalb von HTML anzeigen zu können; das klappt natürlich nicht mehr, wenn ein String innerhalb der Formel plötzlich ersetzt wird.

Kann mir jemand sagen, wie das klappen könnte?
 
1. Warum nicht gezielt Dinge ersetzen? Was willst du damit erreichen?
2. Gibt es die "e" Flag in PHP7 nicht mehr, das solltes du auch bedenken.

Kannst es ja mit non-capture groups versuchen:
Code:
(?:^|>|(?:\$\$))(.*?)(?:<|$|(?:\$\$))
In Worten: (non-capture Anfang ODER > ODER $$)(alles matchen, lazy)(non-capture < ODER Ende ODER $$)
Sollte alles matchen, außer es ist in <> oder $$$$, bzw. das un Anfang/Ende

Trotzdem keine Ahung für was man das brauchen sollte :freak:
 
Wenn ich innerhalb der Webseite eine Suche durchführe, werden die Suchbegriffe farblich markiert:aus Suchbegriff wird <span class="suchbegriff">Suchbegriff</span>.

Damit wird bspw. mit dem Suchbegriff EOT aus der Formel
$$EOT=\frac{...}{...}$$
das hier:
$$<span class="suchbegriff">EOT</span>=\frac{...}{...}$$
und das ist Unsinn.


Das "e"-Flag nutze ich auch nicht mehr.

Danke schön.
 
Zuletzt bearbeitet:
Achso, hatte sich für mich so angehört, als wolltest du das das ganze HTML filtern :D
 

Ähnliche Themen

Antworten
1
Aufrufe
1.639
Zurück
Oben