具有匹配使用的preg_match一个HTML元素的问题
-
19-09-2019 - |
题
我想匹配的HTML元素,但我不认为它的匹配,因为$标题是空的 - 任何人都可以指正
我的preg_match:
preg_match_all("~<td align=\"left\" width=\"50%\">[^<]*. <b><a href=\"(.*?)\">[^<]*</a>~i", $main, $titles);
实施例的HTML,以匹配:
//<td align="left" width="50%">1. <b><a title="Wat" href="http://www.exmple.com/q.html">Wat</a></b><br></td>
我缺少的东西吗?
感谢所有的任何帮助
解决方案
有什么可以在title="Wat"
标签匹配<a>
。
我建议不使用正则表达式来分析,虽然它。我不是太熟悉PHP,但我敢肯定,它已经拥有的东西,会做的大部分工作适合你。
其他提示
我在我的评论正则表达式说是很少,如果试图解析HTML当过适当的工具来使用。林foing使用Zend_Dom_Query,Zend Framework中日ecomponetns之一的例子仅仅是因为我还没有看到它建议对这些问题的一个呢。所以......
$dom = new Zend_Dom_Query($htmlHaystack);
$anchors = $dom->query('//td/a[@title]'); // xpath here
if(count($anchors) > 0)
{
$titles = array();
foreach($anchors as $element)
{
$titles[] = $element->getAttribute('title');
}
}
else
{
$title = null;
}
$string='<td align="left" width="50%">1. <b><a title="Wat" href="http://www.exmple.com/q.html">Wat</a></b><br></td>';
$s = explode("</a>",$string);
foreach($s as $k){
if (strpos($k,"href")!==FALSE){
echo preg_replace('/.*href="|">.*/ms',"",$k);
}
}
不隶属于 StackOverflow