Hallo zusammen,
vorab erwähnt, ich habe mich der Suche bereits bedient, bin auch zu vielen Ergebnissen gekommen, aber gerade nicht zu dem, was ich speziell suchte.
Es ist so, ich habe eine von mir definierte Funktion mit preg_replace geschrieben, die dafür sorgt, dass ein Text zwischen zwei Unterstrichen steht, fett geschrieben wird. Also wird aus _beispiel_ ein <b>beispiel</b>. Das funktioniert alles einwandfrei. Nun ist es aber so, das ich auch mit URL und Grafiken-Verlinkungen mir erlaubt habe, es hier den Nutzern leichter zu machen. Aber wenn nun jemand eine bspw. die Grafik das_bin_ich.jpg verlinken möchte mit [img]das_bin_ich.jpg[/img], dann wird der Link zwar richtig verstanden, dennoch kommt es dann zum Ergebnis www.abc.de/das<b>bin</b>ich.jpg.
Wie kann ich dafür sorgen, dass er zwischen von mir festgelegten Zeichen wie [img] und [/img] nicht das Ersetzen der Unterstriche vornimmt?
Liebe Grüße
Ankündigung
Einklappen
Keine Ankündigung bisher.
Ersetzen mit preg_replace
Einklappen
Neue Werbung 2019
Einklappen
X
-
Ersetzen mit preg_replace
-
Zur Eingangsfrage:
/\b_([\p{L}\p{N}])_\b/u
Und das wird trotzdem nicht gut funktionieren.
Was machst du, wenn *_Wort_* kommt und sowohl * als auch _ etwas zu bedeuten haben?
Als mögliche Lösung kannst du den Text tokenizen und dann eine quasi-manuelle Auswertung der einzelnen Fälle machen. Oder du nimmst (wie mermshaus bereits vorgeschlagen hat) rinen fertig Markup-Interpreter.
-
So was ist etwas knifflig. Besteht die Möglichkeit, die gesamte Markup-Logik (also die Regeln, wann was fett formatiert werden soll und dergleichen) gegen etwas wie zum Beispiel Markdown auszutauschen?
Falls du an deinem Format festhalten möchtest, musst du früher oder später einen ordentlichen Tokenizer/Parser dafür basteln, der erst mal alle Bestandteile der Eingabe in semantische Tokens übersetzt.
Es gibt zwar Hacks, um kleinere Sachen zu bewerkstelligen, aber das hat Grenzen.
Ein Hack in diesem Fall: Ermittle alle Bereiche zwischen ":img>:" und ":<img:" (die jeweiligen Start- und End-Offsets) und prüfe in dem Teil, der fett formatiert, ob ein Unterstrich in einem dieser Bereiche liegt. Falls ja, überspring den.
Ich habe einen Algorithmus dafür hier (oder auf phpforum.de) mal irgendwo gepostet, aber ich weiß gerade nicht, wie ich den finden soll.
Einen Kommentar schreiben:
-
Hallo Moewe,
es ist nicht ganz falsch mit einem Texteditor. Als beispiel:
Code::img>:Beschreibung|LINK_DER_GRAFIKDATEI.JPG:<img: wird zu <a href="LINK<b>DER</b>GRAFIKDATEI.JPG">Beschreibung</a> _Text, der fett geschrieben werden soll_. wird zu <b>Text, der fett geschrieben werden soll</b>
Liebe Grüße
Einen Kommentar schreiben:
-
VOR einem Unterstrich muss ein Leerzeichen erscheinen, NACH einem Unterstrich muss ein Leerzeichen erscheinen...
Einen Kommentar schreiben:
-
Es ist leider mir unverständlich was genau du willst...
Wenn ich es richtig rauslesen, dann brauchst du einen Texteditor wie auch hier im Forum...oder bin ich da auf dem falschen Dampfer?
Einen Kommentar schreiben:
Einen Kommentar schreiben: