Ankündigung

Einklappen
Keine Ankündigung bisher.

Ersetzen mit preg_replace

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ersetzen mit preg_replace

    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


  • #2
    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?
    Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen

    Kommentar


    • #3
      VOR einem Unterstrich muss ein Leerzeichen erscheinen, NACH einem Unterstrich muss ein Leerzeichen erscheinen...
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        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>
        Nun ist es aber so, dass die Unterstriche in der Adresse der Grafikdatei auf interpretiert werden, als wenn der Nutzer meint, es soll fett geschrieben werden. Soll es aber gar nicht. Also wie kann ich es hier am besten lösen, das die URL, die zwei Unterstriche hat, nicht zwischen den bestimmten :img>: und :<img: nicht ersetzt werden. Ich hoffe, damit konnte ich etwas Licht ins dunkle bringen.

        Liebe Grüße

        Kommentar


        • #5
          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.

          Kommentar


          • #6
            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.
            Standards - Best Practices - AwesomePHP - Guideline für WebApps

            Kommentar

            Lädt...
            X