[REGEX] Pregmatch all

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

  • [REGEX] Pregmatch all

    Hi,

    evt. kann mir jemand helfen.
    Ich durchsuche db einträge nach folgendem Muster

    Code:
    [img file= ...]
    . die ergebnisse möchte ich in ein Array packen.

    Dafür sieht mein Ansatz folgender Maßen aus:
    PHP-Code:
    $regex='#\[img file=\"(.*?)\]#';
    preg_match_all($regex,$postarchiv[$key]['news_text_long'],$found); 
    das liefert mir leider z.b. folgendes Array
    Code:
    Array ( [0] => 
    Array ( [0] => [img file="img/userfiles/timo trallala/Image_1119648887.jpg" class="right" 
    title="Eule Und Turmwirt" 
    subtitle="Eule und der Turmwirt im Huebis"] ) 
    [1] => Array ( [0] => img/userfiles/timo trallala/Image_1119648887.jpg" class="right" 
    title="Eule Und Turmwirt" 
    subtitle="Eule und der Turmwirt im Huebis" ) )
    nur beim ersten match werden die öffnende und schließende Klammer ausgelsen.

    Danke
    derTrallala
    Zuletzt geändert von Timo Trallala; 28.04.2007, 20:24.
    Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

  • #2
    Die Klammern müssen escaped werden - sie sind spezielle Zeichen bei Regulären Ausdrücken. Du solltest dich in dem Bereich nochmal mit den Grundlagen beschäftigen.
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      sind sie ...sonst gäbe es ja nicht beispielhaftes match

      PHP-Code:
      $regex='#\[img file=\"(.*?)\]#'
      gibt es denn eine Möglichkeit ein rücgabe-Array zu bekommen, wo nur die gesuchten Teile drinne sind
      Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

      Kommentar


      • #4
        die klamer sind escaped, aber das forum hat da ein problem mit regexpres, wenn es innerhalb von [php] liegt.

        was mich bei seinem regex stört, dass er auch andere dienge wie class
        und title reingehaut hat, deshalb liefert sein regex alles was zwischen 'file=' und ']' aus.
        Slava
        bituniverse.com

        Kommentar


        • #5
          Original geschrieben von Slava
          die klamer sind escaped, aber das forum hat da ein problem mit regexpres, wenn es innerhalb von [php] liegt.

          was mich bei seinem regex stört, dass er auch andere dienge wie class
          und title reingehaut hat, deshalb liefert sein regex alles was zwischen 'file=' und ']' aus.
          Das stellt kein Problem dar. Da steht nur text und einige bbcodes.
          Nur bei der Voransicht der Nachrichten soll es keine Bilder geben. soweit so gut. Allerdings benötige ich die entsprechenden extrahierten teile in einem array $found ([img file="img/userfiles/timo trallala/Image_380063396.jpeg" class="left" title="Pressekonferenz" subtitle="Foto Bechert: Hatte wieder viel Spaß in Halle: Sylvia Roll"],und alle weiteren);

          der soll alles raushauen von
          [img file="....] raushauen ab öffnender bis endender Klammer!

          Gruß
          derTrallala
          Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

          Kommentar


          • #6
            das geht nicht mit einem regex!
            du muss zuerst alle attributen extrahieren
            $pattern = '/\[img\s+([^\]]+)\s*+\]/is';

            // RegEx mit preg_match_all() auswerten
            preg_match_all($pattern, $TXT, $array);

            jetzt bekommst du in deinem $array[1] ein array mit allen attributen von images, die du noch mal mit dem regex behandeln muss um auf die eigenschaften zu kommen.

            $pattern = '/([^\s=]++)\s*=\s*"([^"]++)"/is';

            // RegEx mit preg_match_all() auswerten
            preg_match_all($pattern, $TXT, $eigenschaften);
            jetzt kannst du zu $eigenschaften[1][x] sein wert in $eigenschaften[2][x] auslesen
            Slava
            bituniverse.com

            Kommentar


            • #7
              OffTopic:
              stimmt mit "/" und [ PHP ] war mal was ....
              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

              Kommentar

              Lädt...
              X