romy: reg.Ex. für img

Hi,

ich versuche mittels preg_match und dem untenstehenden muster ein img-tag in teile aufzuspalten. Ich habe nicht kapiert was die Trennzeichen sind. (Habe ein ähnliches Muster für links, dort gibt es keine Probleme.) Ich dachte alle geklammerten Bereiche werden in das array abgelegt.
Aber ich bekomme beim 3. anstatt nur der Adresse, auch den ganzen Rest der dahinter ist.
das 1. und das 2. liefern das Gewünschte. Wie sage ich dies dem Muster?

=^(.*)<img(.*)src="?(\S+)"?([^>]*)>(.*)$=mix

ciao
romy

--
DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN\n\nsh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[\nDie Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html\nEinen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
  1. Hi Romy

    =^ (.*) <img (.*) src = "? (\S+) "? ([^>]*)> (.*) $=mix

    ^^ bedeutet ALLES außer Leerzeichen, womit " dann übergangen wird, wenn ich mich nicht irre.

    Gruß,
    Danny

    1. =^ (.*) <img (.*) src = "? (\S+) "? ([^>]*)> (.*) $=mix

      /
       (.*) <img (.*) src =
       (["'])?  # " oder ' in Reg 3
       (?(3)  # wenn Anführungszeichen
         (.*?)\3  # Teil bis zum nächsten Anführungszeichen speichern
         | ([^\s>]+)  # sonst Teil bis zum nächsten Leerzeichen oder Ende speichern
       )
       (.*)
      /mix

      So könnte es auch funktionieren. Hier werden sogar beide Anführungszeichen berücksichtigt, was oft bei Javascript-Anweisungen (Event-Handler) innerhalb von Attributen vorkommt.

      Gruß,
      Danny

      1. Hi,

        /
        (.*) <img (.*) src =
        (["'])?  # " oder ' in Reg 3
        (?(3)  # wenn Anführungszeichen
           (.*?)\3  # Teil bis zum nächsten Anführungszeichen speichern
           | ([^\s>]+)  # sonst Teil bis zum nächsten Leerzeichen oder Ende speichern
        )
        (.*)
        /mix

        vielen Dank!
        Hat mir gerade fürs Verständnis einiges geholfen!

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
        Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
        Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
  2. Hallo romy,

    Aber ich bekomme beim 3. anstatt nur der Adresse, auch den
    ganzen Rest der dahinter ist.
    [...]
    =^(.*)<img(.*)src="?(\S+)"?([^>]*)>(.*)$=mix

    Na klar kriegst du den Rest, der dahinter ist. \S+ matcht auch
    auf ". Sinnvoller waere hier:

    !(.*)<img(.*)src=((?:"[^"]+")|(?:'[^']+')|(?:\S+))([^>]*)>(.*)!mix

    Dabei solltest du allerdings aufpassen, da im 3. Backtick nun
    auch die eventuellen " bzw. ' gespeichert sind.

    Gruesse,
     CK

    --
    http://cforum.teamone.de/
    http://wishlist.tetekum.de/
    If God had meant for us to be in the Army, we would have been born with green, baggy skin.
    1. Hi,

      !(.*)<img(.*)src=((?:"[^"]+")|(?:'[^']+')|(?:\S+))([^>]*)>(.*)!mix

      bleibt auch der Rest bestehen, aber nicht immer, nur in einem Falle:
      <img src=bla.jpg> wenn das > direkt nach der src kommt -> gilt auch für -mit Leerzeichen-
      sobald mindesten ein leerezeichen dazwischen ist funktionieren beide Varianten gut.
      Also müsste es ja an ([^>]*) liegen?

      ciao
      romy

      --
      DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
      sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
      Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
      Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
    2. Hallo romy,

      !(.*)<img(.*)src=((?:"[^"]+")|(?:'[^']+')|(?:\S+))([^>]*)>(.*)!mix

      Kleiner Fehler:

      !(.*)<img(.*)src=((?:"[^"]+")|(?:'[^']+')|(?:[^>\s]+))([^>]*)>(.*)!mix

      In einer URL-Angabe ohne "" ist auch kein > erlaubt.

      Gruesse,
       CK

      --
      http://cforum.teamone.de/
      http://wishlist.tetekum.de/
      If God had meant for us to be in the Army, we would have been born with green, baggy skin.
      1. Hi,

        !(.*)<img(.*)src=((?:"[^"]+")|(?:'[^']+')|(?:[^>\s]+))([^>]*)>(.*)!mix

        danke, so geht es...

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
        Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
        Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode