nochmal regex

c_bob

Grünschnabel
Hallo Tutoristen!

Ich habe folgendes Problem:

Aus einem String wie dem folgenden benötige ich die Angaben aus width und height, wobei aber nicht unbedingt festgelegt ist, in welcher Reihenfolge die Attribute innerhalb des img-Tags stehen (was das eigentliche Problem ist)

PHP:
<p style="text-align: center;">##<img style="vertical-align: middle; border: 1px solid #000000;" src="/images/bilder/hund.jpg" alt="ein bild" width="500" height="375" /></p><p>text text text text ... </p>

Ich habe mit folgendem Ausdruck schon ein wenig erhalten, allerdings zeigt er mir nur was an, wenn die Reiehnfolge auch stimmt:

PHP:
!##(<img (.*?).width="(.*?)".height="(.*?)".*?>)!

Wenn im String die Reihenfolge verstauscht ist, funktioniert es nicht. Was muss ich anders machen?
 
In dem Fall macht es mehr sinn, wenn du den ganzen img tag matchst und dann den String an den Leerzeichen splittest (zb mit explode) dann kannst du gezielt nach den einzelnen Attributen suchen.

Mit Regex kommst du halt nich wirklich mit der Reihenfolge hin.. hatte das Problem auch mal ;)
 
eine einfachere Methode zu Matthias's Alternativauswahl mit | :
Code:
/(width|height)+="(\d+)"/
Man muß nur im Nachhinein noch checken, in welcher Reihenfolge die Attribute benutzt wurden..

mfg chmee

edit: :D Tja, bei mir wird übergangen, dass nur img-Tags überprüft werden sollen, Asche auf mein Haupt..
 
edit: :D Tja, bei mir wird übergangen, dass nur img-Tags überprüft werden sollen, Asche auf mein Haupt..
Noch ein bisschen Salz in die Wunde gefällig? :D Bei deinem Regex werden auch Attribute wie widthheightheight (überflüssiges +) oder dumdidumwidth (fehlendes \b am Anfang) gefunden ;) Über \d+ anstatt [^"]* hab ich auch schon nachgedacht, allerdings sind ja auch Angaben wie width="100px" möglich. Wenn man das ausschließen kann, dann kann man ohne Bedenken \d+ verwenden.

Grüße,
Matthias
 
Zuletzt bearbeitet:
Ich genieße das Salz :D Das px-Argument ist gewichtig, das geb ich zu, die Doppelnennung lasse ich nicht gelten (dann machen wir daraus ein {1}), diese Seite wäre ja außerhalb jeglicher Koformität - das ist die Kontrollinstanz vor dem Regex - die des Coders :D

mfg chmee

Aber unterm Strich, so eine Info ist super für alle, die sich mit Regex beschäftigen - auch für mich.
 
Zurück