Ankündigung

Einklappen
Keine Ankündigung bisher.

Reguläre Ausdrücke (preg_replace)

Einklappen

Neue Werbung 2019

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

  • Reguläre Ausdrücke (preg_replace)

    hallo zusammen

    Ich habe ein Problem mit preg_replace. Ich schaff es einfach nicht den richtigen Ausdruck zu finden.

    also so sieht der text aus:
    blablabla
    <img border=\"0\" alt=\"TA<TEXTAREA class=\'textarea\' NAME=\'df-31310688-\' ></TEXTAREA>\" src=\"js/tiny_mce/plugins/formular/images/textarea.jpg\" />
    blablabla

    nun will den Text so:
    blablabla
    TA<TEXTAREA class=\'textarea\' NAME=\'df-31310688-\' ></TEXTAREA>
    blablabla

    Ich hab schon viel probiert mit preg_replace aber irgendwie geht das nicht. Weiss jemand wie ich den ausdruck gestalten muss?

  • #2
    PHP-Code:
    <?php
    preg_match
    ('#<img.*alt="(.*)".*>#U'$codeText$m);
    ?>
    in $m[1] sollte jetzt das innerhalb von alt="<-- hier -->" stehen.
    Jetzt kannst du
    blablabla1
    $m[1]
    blablabla2
    ausgeben.

    Kommentar


    • #3
      ok hab mal selbst was gebastelt:
      PHP-Code:
      <?php
      function replaceImagetoTextarea($__text)
      {
      $pattern='#<img alt=\\\"(.+)\\\" src=\\\"js/tiny_mce/plugins/formular/images/textarea.jpg\\\" />#'
      $replace='\1';
      return 
      preg_replace($pattern$replace$__text);
      }
      ?>
      der text kommt von einem textarea per post... bei nur einem "bild" geht es einwandfrei.
      sobald ich jedoch von 2 oder mehr "bilder" den ALT text rausfiltern will geht es nicht mehr.
      Die ausgabe sieht dann folgendermasen aus:
      <TEXTAREA class=\'textarea\' NAME=\'g-13841005-\' ></TEXTAREA>\" src=\"js/tiny_mce/plugins/formular/images/textarea.jpg\" />

      <img alt=\"<TEXTAREA class=\'textarea\' NAME=\'d-19317111-\' ></TEXTAREA>

      irgendwie verschiebt sich der src=... vom 2. Bild und der suchwert wird nicht mehr gefunden und ausgetauscht. weiss jemand woran das liegen kann?

      @Zergling: der text in $m sollte gleich ausgetauscht werden, da es sich um längere texte handelt und mehrere bilder dieser aber auch anderer art drin sind.

      Kommentar


      • #4
        sorry @ Zergling:
        PHP-Code:
        <?php
        preg_match
        ('#<img.*alt="(.*)".*>#U'$codeText$m);
        ?>
        Der ausdruck funktioniert... (auch bei mehreren bildern). einfach anstatt preg_match preg_replace. hatte beim suchmuster die backslashes nicht gesetzt...
        also:
        PHP-Code:
        <?php
        preg_replace
        ('#<img.*alt=\\\"(.*)\\\".*textarea\.jpg.*>#U''\1'$__text);
        ?>
        Vielen Dank!!! Hatte mir den ganzen Morgen den Kopf daran zerbrochen.

        Kannst du mir erklären was der unterschied zwischen .* und .+ ist?
        und wieso verschiebt es den src... bei meinem versuch nach oben?

        Kommentar

        Lädt...
        X