2012-03-30 11 views
0

Ich möchte die Bilder filtern, indem Sie seine Erweiterung Überprüfung und meine Codierung ist wie folgt:php preg_match_all Probleme

preg_match_all("/<img.*?src=\"(.*?)\".*?\/>/i", $this->content, $resultImg); 

und das Ergebnis wird so aussehen:

Array (
    [0] => xxx/logo.png?1253 
    [1] => xxx/banner.jpg?1253 
    [2] => xxx/6606072563_a9d41ef0ca_z_medium.jpeg?1253 
    [3] => xxx/6605789711_43e2ca1f0d_z_medium.bmp?1253 
) 

Aber das System nur akzeptieren jpg, png & gif, kann ich wissen, wie kann ich die Bild-URL, die Erweiterung ist nicht jpg, png & gif mit der Codierung oben?

Dank all

Antwort

0

Um das Attribut greifen Sie mit dem spielen | Operator in Regexp. Hier ist eine hässliche regex, die die Arbeit tun konnte:

/<img.*?(((class=\"([a-z0-9 ]+)\")|(style=\"([a-z0-9 :;#\-]+)\")|(name=\"([a-z0-9]+)\")|(id=\"([a-z0-9]+)\")|(src=\"(.*?)\.(jpg|png|gif)(\?[0-9]*)?\")).*?)+\/>/i 

ich den folgenden Code verwendet, um es zu testen:

<img style="margin-left:20px;color:#fff;" onclick="javascript::void()" class="xxx" id="4" src="test.gif?12345" name="anam" /> 

Wenn Sie versuchen, HTML-Syntax zu analysieren Sie Dinge wie htmlsimpledom, dass verwenden soll wird weniger schwer zu verstehen und zu implementieren

+0

htmlsimpledom ist gut, ich mag es, danke grifos. –

+0

aber ich habe immer noch das gleiche Problem, wenn ich mit simple_html_dom, wie kann ich .bmp Datei filtern? –

+0

Ich bekomme es ~ foreach ($ html-> find ('img [src $ =. Jpg], img [src $ =. Jpeg], img [src $ =. Gif], img [src $ =. Png]') als $ element) { \t \t echo $ element-> src. '
'; \t} –

0

Diese folgende Regex Matches zurück, wenn die Erweiterung jpg oder gif nur

/<img.*?src=\"(.*?)\.(jpg|png|gif)\".*?\/>/i 

bearbeiten kümmern Sie stelligen Parameter

/<img.*?src=\"(.*?)\.(jpg|png|gif)(\?[0-9]*)?\".*?\/>/i 

ist png sollten Sie verbessern durch accpening die 'char als wrapper der adresse (src argument von img tag) ich bin neugierig, also kannst du mir erklaren warum du den lasy start verwendest (*?) Operator? Ich habe es nie benutzt, weiß also nicht, in welchem ​​Anwendungsfall es hilfreich ist.

Grüße

+0

Hallo Grifos, danke für Ihre Antwort, es ist praktikabel, wenn es keine Wörter hinter der Erweiterung gibt, zB: aaa.jpg. aber wenn die Bilddatei aus zusätzlichen Wörtern hinter seiner Erweiterung besteht wie aaa.jpg? 12345, dann kann es die Bilder nicht bekommen ... –

+0

Tut mir leid vergessen, auf Ihre Parameter zu achten, ich werde meine Antwort aktualisieren – grifos

+0

Hallo Grifos, danke Für Ihre schnelle Antwort funktioniert es perfekt. Gute Arbeit :) –