我有像
这样的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标签。那么应该做些什么改变来获得具体的价值?
答案 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)"