使用正则表达式从HTML获取图像src

时间:2014-01-03 11:31:35

标签: php regex

我有像

这样的HTML
<td class="td_scheda_modello_dati">

       <img src="/webapp/safilo/gen_img/p_verde.gif" width="15" height="15" alt="" border="0">

</td>

我想使用preg_match_all()从这个HTML中提取img src。

我已经完成了这个

preg_match_all('#<td class=td_scheda_modello_dati>(.*)<td>#',$detail,$detailsav);

它应该给整个img标签。但是它没有给我img标签。那么应该做些什么改变来获得具体的价值?

4 个答案:

答案 0 :(得分:5)

长话短说: ideone

您不应该使用Regex,而是使用HTML解析器。这是怎么回事。

<?php
$html = '<img src="/webapp/safilo/gen_img/p_verde.gif" width="15" height="15" alt="" border="0">';
$xpath = new DOMXPath(@DOMDocument::loadHTML($html));
$src = $xpath->evaluate("string(//img/@src)");
echo $src;
?>

答案 1 :(得分:1)

试试这段代码。

$html_text =  '<td class="td_scheda_modello_dati">   
            <img src="/webapp/safilo/gen_img/p_verde.gif" width="15" height="15" alt=""    border="0"></td>';

preg_match( '/src="([^"]*)"/i', $html_text , $res_array ) ;

print_r($res_array);

答案 2 :(得分:1)

在正则表达式后尝试使用s修饰符。点字符的默认行为是不匹配换行符(您的示例有)。

类似的东西:

preg_match_all('#<td class=td_scheda_modello_dati>(.*)</td>#s',$detail,$detailsav);

应该做的伎俩。

值得读一下修饰符,你用正则表达式做的越多,它们就越有用。

http://php.net/manual/en/reference.pcre.pattern.modifiers.php

编辑:另外,只是意识到发布的代码缺少关闭的td标记(它​​是<td>而不是</td>)。修复了我的例子来反映这一点。

答案 3 :(得分:0)

试试这个:<img[^>]*src="([^"]*/gen_img/p_verde.gif)"

相关问题