pragmaMx Support Forum

pragmaMx => Coder und Bastlerecke => Thema gestartet von: pyr0 am 23 Oktober 2014, 10:57:20

Titel: suchen und ersetzen ?!?
Beitrag von: pyr0 am 23 Oktober 2014, 10:57:20
MOin an alle  :morning:

Mal ne Frage: ich möchte in meinem Content von ein Modul nach folgedem Inhalt suchen, wo bei die Angabe zu dem Bild und der Grösse dynamiach sind

<img alt="" height="90" src="media/images/Penguins.jpg" width="120" />

und so umstellen, dass
<a href="media/images/Penguins.jpg" rel="lightbox"><img alt="" height="90" src="media/images/Penguins.jpg" width="120" /></a>
Ich weiss das das bestimmt mit regulären Ausdrücken geht, nur bekomme ich es nicht hin.
Mein theoretischer Ansatz:
- such mal nach <img und ersetze durch <a href="???" rel="lightbox">das bekomme ich hin nur feht mir ja jetzt noch die gesamte Bildinfo also der Link zum Bild, dazu kommt ja noch dass das ganze html Tag vom Link auch noch geschlossen werden muss  :gruebel:

Hat jemand ne Idee bzw. ne Lösung dafür

Gruss pyr0
Titel: Re:suchen und ersetzen ?!?
Beitrag von: Webfan am 28 Oktober 2014, 16:19:00
Hallo pyro,
Zitat
Ich weiss das das bestimmt mit regulären Ausdrücken geht,
Bis zu einem gewissen Grade geht das, sofern die img tags sich aber unterscheiden können (z.b. unterschiedliche Attribute Reihenfolge/Präsenz, etc...), ist es vielleicht einfacher und auch programmatisch sicherer einen "qualifizierten" Parser zu verwenden.
Mein Webfan Modules Setup Modul bringt den "simple_html_dom" parser mit, wecher im Netz auch standalone erhältlich ist.

Beispiel:
foreach($dom->find('img') as $e){
 $e->outertext =
<a href="'.$e->src.'" rel="lightbox">'.$e->outertext.'</a>
;
}

Der simple_html_dom Parser verarbeitet auch fehlerhaft formatiertes HTML einigermaßen brauchbar, das bisher einfachste und praktischste was ich gefunde habe.
Sofern komplexere DOM Modifikationen erforderlich sind, ist so ein parser einer reinen regex Lösung vorzuziehen und wohl auch perfomanter!?!

Viele Grüße
Till

EDIT: Und wo Du grad dabei bist Deine img tags zu bearb eiten würde ich auch die height usw. attribute in ein style Attribut auslagern.