正则表达式到以下字符串

时间:2012-08-13 05:25:46

标签: php

请告诉我,我可以使用该表达式在以下代码中提取网址

<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);

2 个答案:

答案 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');