Regex zu gierig

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

  • Regex zu gierig

    Ich habe einen Regex, der in einem Text nach Bildern mit dem alt-Text "gross' sucht und diesen einen Großansicht-Link verpaßt.

    Code:
    /<[IMG|img](.*)alt\=["gross"|gross](.*)src=".*manualuploads\/([^"]*)"(.*)>/U
    Das funktionierte bisher auch gut, nur bei einzelnen Bildern wird er gierig und spuckt sie aus, obwohl sie definitiv nicht alt="gross" im Tag haben. Hat jemand dafür eine Erklärung. Das einzige, was diese Bilder auszeichnet, ist, daß sie einen base64-Codierten String im alt-Tag haben. Dieser besteht aus Buchstaben und Gleichheitszeichen, sonst nichts. Hat jemand einen Tpp, ob an o.g. Regex was nicht stimmt. Ich bin echt ratlos
    Zuletzt geändert von pekka; 10.02.2008, 17:40.

  • #2
    Hast du dir mal angeschaut was in diesem Fall im ersten geklammerten Ausdruck gematched wird?
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Ja, der gesamte HTML-Block vom ersten img bis nach dem letzten. Aber im ganzen Code kommt nirgendwo "gross" vor. Ich steh auf dem Schlauch

      Kommentar


      • #4
        Ich vermute mal, dass einfach jeder alt= gematched wird wegen .*
        Hast du probiert statt .* etwas wie [^alt=]* zu machen? Dein RegExp geht wenn alt nicht gross ist einfach auf .* zurück.

        Gruss

        tobi
        EDIT:

        Upps Strings kann man ja nicht so einfach negieren

        Zuletzt geändert von jahlives; 10.02.2008, 19:14.
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Alternativen werden nicht mit [] angegeben, sondern mit ()
          dein Ausdruck [img|IMG] sagt "ein Zeichen aus i,m,g,|,I,M,G"
          und nicht "img oder IMG"

          probiere mal so was
          Code:
          #<img(.*)alt\="?gross"?(.*)src=".*manualuploads\/([^"]*)"(.*)>#Ui
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #6
            Original geschrieben von TBT
            Alternativen werden nicht mit [] angegeben, sondern mit ()
            dein Ausdruck [img|IMG] sagt "ein Zeichen aus i,m,g,|,I,M,G"
            und nicht "img oder IMG"

            probiere mal so was
            Code:
            #<img(.*)alt\="?gross"?(.*)src=".*manualuploads\/([^"]*)"(.*)>#Ui

            Arrrrgh. Das wars wahrscheinlich. Teste ich nachher gleich und gebe Bescheid, ob es geklappt hat. Vielen Dank an beide für die Hilfe.

            Kommentar

            Lädt...
            X