1

让我知道我可以使用该表达式在以下代码中提取 url

<div class="bg-movie alpha omega">
<img class="alignnone size-full wp-image-7282" 
         title="CineMundo Tu Mejor Lugar El Caballero de la Noche Asciende" 
         src="http://www.cinemundo.cl/sitio/wp-content/uploads/2012/05/cinemundo_batman_el-caballero-de-la-noche-asciende_estrenos-2012.jpg" 
         alt="Película El Caballero de la Noche Asciende - Estrenos 2012" 
         width="117" height="173">
</div> 

来这里,但我工作不好

preg_match_all('/<img [class="bg-movie alpha omega"]*src=["|\']([^"|\']+)/i', $html, $images);
4

2 回答 2

1

与其试图强制正则表达式在解析 HTML 时处理所有奇怪的边缘情况,不如使用 PHP 的内置 DOM 库来解析 HTML 并获取所需的数据:

<?php

$doc = new DOMDocument();

$data = <<<EOD
<div class="bg-movie alpha omega">
<img class="alignnone size-full wp-image-7282"
         title="CineMundo Tu Mejor Lugar El Caballero de la Noche Asciende"
         src="http://www.cinemundo.cl/sitio/wp-content/uploads/2012/05/cinemundo_batman_el-caballero-de-la-noche-asciende_estrenos-2012.jpg"
         alt="Película El Caballero de la Noche Asciende - Estrenos 2012"
         width="117" height="173">
</div>
EOD;

$doc->loadHTML($data);
$xpath = new DOMXpath($doc);
$result = $xpath->query('//img/@src');

foreach ($result as $srcAttr) {
    echo $srcAttr->value, "\n";
}

编辑:这是从网站加载页面的示例:

<?php

$doc = new DOMDocument();
$url='http://www.cinemundo.cl/peliculas/batman-el-caballero-de-la-noche-asciende/';
@$doc->loadHTMLFile($url);
$xpath = new DOMXpath($doc);
$result = $xpath->query('//div[@class="bg-movie alpha omega"]/img/@src');

foreach ($result as $srcAttr) {
    echo $srcAttr->value, "\n";
}
于 2012-08-13T06:04:32.390 回答
1

根据建议,您应该考虑使用 PHP DOM 库。您的代码将是可读和可重用的。

$dom = new DOMDocument;
$dom->loadXML($html);
echo $dom->getElementsByTagName('img')->item(0)->getAttribute('src');
于 2012-08-13T06:05:29.690 回答