JPG görüntü yakalamak için Regex sadece

6 Cevap php

PHP bu regex var:

$regex = '/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui';

Bir dize tüm resim etiket kaynakları yakalar, ama ben sadece JPG dosyaları yakalamak istiyorum. Ben (*.) Etrafında karışıklık denedim ama ben sadece Şimdi ben dizi filtreleme ... Ben regex emmek kanıtlanmıştır ama ben sadece düz kadar bunu zaman çok fazla kesmek gibi hissediyor ettik uygun bir maç.

6 Cevap

Bu deneyin:

$regex = '/<img ([^>]* )?src=[\"\']([^\"\']*\.jpe?g)[\"\']/Ui';

Ben de gerekli değildi karakter sınıfları içinde ekstra | kaldırıldı.

Birincisi, bir HTML çözümleyici tüm img etiketleri olsun. Sonra, kimin src özniteliðin değeri regex ile eşleşen \.(jpeg|jpg)$ o alır.

Örneğin kullanılarak this parser,

$html = file_get_html('http://example.foo.org/bar.html');
foreach ($html->find('img') as $img) {
    if (preg_match ("\.(jpeg|jpg)$", $img->src) {
        //save $img or $img->src or whatever you need
    }
}

Edit: Ben düzenli ifade kısaltılmış. Da kullanabilirsiniz \.jpe?g$.

Deneyin:

$regex = '/<img[^>]*'.'src=[\"|\'](.*[.]jpg)[\"|\']/Ui';

Eğer PHP Ayraç olarak kullanıyor beri ' kaçmak için dikkatli olmak gerekir.

Ayrıca jpeg bunu yapmak istiyorum .jpg veya tarafından son dosyayı arıyor.

$regex = '/<img[^>]*src=["\']([^\'"]*)\.(jpg|jpeg)["\'][^>]*>/Ui';

Sadece ben inanıyorum kapanış tırnak önce. Jpg aramak gerekir

$regex = '/<img[^>]*'.'src=[\"|\'](.*\.jpg)[\"|\']/Ui';

Sen tüm etiketler arasında boşluk olabileceğini unutmuşum < ve img

So a correct regexp should start with /<\s*img