Preg_match kullanarak IMG etiketinin SRC niteliğini Eşleştirme

5 Cevap php

Ben ($ row-> introtext saklanan bu durumda) bir makalesinde ilk IMG etiketi SRC özniteliği ayıklamak için preg_match çalıştırmak için çalışılıyor.

preg_match('/\< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\']*)/i', $row->introtext, $matches);

Bunun yerine gibi bir şey alma

images/stories/otakuzoku1.jpg

itibaren

<img src="images/stories/otakuzoku1.jpg" border="0" alt="Inside Otakuzoku's store" />

Ben olsun sadece

0

Regex doğru olmalıdır, ancak bu sınır niteliği değil src özniteliği eşleşen görünmektedir neden söyleyemem.

Eğer çok düz 'bir HTML / XML ayrıştırıcı kullanmak' cevap alanına ve yazmaya atlama olmadan okumak sabır yaşadım eğer sorun bütün o bir bulgu yaşıyorum Alternatif olarak, biri için iyi bir öğretici tavsiye edilebilir PHP 4 için geçerli.

PHP 4.4.7

5 Cevap

Sizin ifade yanlış. Deneyin:

preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $row->introtext, $matches);

Img src ve ve diğer bazı temizlikleri etrafında parantez kaldırılmasını unutmayın.

Burada yerleşik fonksiyonlar (php> = 4) ile bunu yapmak için bir yol:

$parser = xml_parser_create();
xml_parse_into_struct($parser, $html, $values);
foreach ($values as $key => $val) {
    if ($val['tag'] == 'IMG') {
        $first_src = $val['attributes']['SRC'];
        break;
    }
}

echo $first_src;  // images/stories/otakuzoku1.jpg

Deneyin:

include ("htmlparser.inc"); // from: http://php-html.sourceforge.net/

$html = 'bla <img src="images/stories/otakuzoku1.jpg" border="0" alt="Inside Otakuzoku\'s store" /> noise <img src="das" /> foo';

$parser = new HtmlParser($html);

while($parser->parse()) {
    if($parser->iNodeName == 'img') {
        echo $parser->iNodeAttributes['src'];
        break;
    }
}

üretecek:

images/stories/otakuzoku1.jpg

PHP 4.x ile çalışması gerekir

Ben kullanılan regex çok daha basit oldu. Benim kod kendisine geçirilen dize başka bir işaretleme ile tam bir img etiketi içerdiğini varsayar:

$pattern = '/src="([^"]*)"/';

Daha fazla bilgi için lütfen buraya benim cevaba bakınız: http://stackoverflow.com/questions/138313/how-to-extract-img-src-title-and-alt-from-html-using-php/3815188#3815188

Eğer preg_match() kendisini kullanmanız gerekiyorsa, bu deneyin:

 preg_match('/(?<!_)src=([\'"])?(.*?)\\1/',$content, $matches);