Hallo,
. ist ein delimiter den kannst du nicht in [] einsetzten.
das verstehe ich irgendwie nicht. Man muss den Punkt doch irgendwie nutzen können um alle Zeichen außer den Ausnahmefällen zu referenzieren? Außerdem gibt es ja keine Probleme wenn man nicht als Pattern Delimiter den Punkt nutzt.
Ist es auch möglich zudem noch den Text im eventuell vorhandenen alt Attribut auszulesen?
Code:
<img src="img/screenshots/beispiel1.png" width="250" alt="blabla blabla" />
<img src="img/screenshots/beispiel1.png" width="250" />
<img src="img/screenshots/beispiel1.png" width="250" alt="" >
<img src="img/screenshots/beispiel1.png" width="250" alt='123' >
So geht es leider nicht, denn dann wird nur <img [^>]+\/?> ausgeführt:
Code:
<img (alt="[\w]*")[^>]+\/?>|<img (alt='[\w]*')[^>]+\/?>|<img [^>]+\/?>
EDIT:
Ich glaub ich hab es nun doch noch geschafft:
PHP-Code:
$pattern = '/<img(?:.+(?:alt="(.*)"|alt='(.*)'))*(?:.)*>/i';
Und nochmal eine verbesserte Version:
PHP-Code:
$pattern = '/<img(?:.+(?:alt=["|']+(.*)["|']+))*(?:.)*>/i';
Lesezeichen