c0de: Regulärer Ausdruck - Bilder Filtern

Hey ihr!

Ich brauch dringend eure Hilfe...

Und zwar möchte ich aus einem wiederkehrenden Shema Bilder rausfiltern, aber nicht nur das Bild sondern auch einen Text kurz darunter.

Die Bilder hol ich mir so:
preg_match_all('/(?:"|\')([^"\']+\.(gif|jpg))(?:"|\')/Ui',$html[0],$images);
Ich war schon froh das überhaupt hinbekommen zu haben...

Das Shema ist folgendes:

<div class="image">  
	<img src="http://example.com/img.png" style="width:350px;height:233px;" alt="" />  
<br/>  
Test Bild  
</div>

Ich brauch daraus also "nur" den Link zum Bild (was ich schon kann) UND den Titel dazu ("Test Bild")

Sehr geil wäre es folgendermasen: (muss aber ned sein)
$images[0][1] <= Das Bild
$images[0][1]['title'] <= Titel
bzw:
$images[0][1]['img'] <= Das Bild
$images[0][1]['title'] <= Titel

Ich hoffe ihr habt eine Idee, sollte das eigentlich noch heute haben... danke!

Liebe Grüsse
c0de

  1. Moin Moin!

    Ich hoffe ihr habt eine Idee, sollte das eigentlich noch heute haben... danke!

    Du weißt schon, dass SelfHTML kein Code-Writing-Service ist?

    (X)HTML kannst Du nicht sauber mit regulären Ausdrücken parsen. Nimm einen (X)HTML-Parser. Der liefert Dir Tags und ihre Attribute ganz sauber und unter allen Umständen. HTML kann man so widerwärtig schreiben, dass jeder Ansatz, mit regulären Ausdrücken zu arbeiten, garantiert auf die Nase fällt, und trotzdem ist das noch valides HTML. Ein (X)HTML-Parser kommt damit klar.

    Wenn GARANTIERT ist, dass Dein Input IMMER EXAKT dieses Format hat, kannst Du mit regulären Ausdrücken den Teil herausfischen, der bei <img anfängt und mit dem nächsten /> aufhört. Den zerlegst Du dann weiter. Du kannst z.B. recht sicher annehmen (ACHTUNG! Das ist etwas anderes als eine Garantie!), dass eine URL keine Anführungszeichen enthält, also suchst Du nach src=" gefolgt von beliebigen Nicht-Anführungszeichen, gefolgt von ". Die Nicht-Anführungszeichen fischt Du heraus und speicherst diese als Bild-URL. Analog kannst Du für andere Attribute vorgehen.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".