请告诉我,我可以使用该表达式在以下代码中提取网址
<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);
答案 0 :(得分: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";
}
答案 1 :(得分:1)
根据建议,您应该考虑使用PHP DOM库。您的代码将是可读且可重复使用的。
$dom = new DOMDocument;
$dom->loadXML($html);
echo $dom->getElementsByTagName('img')->item(0)->getAttribute('src');