PHP正则表达式问题

时间:2011-09-15 22:54:47

标签: php html regex

我有这个简单的短语,我需要最后的网址值。

<h4>Location</h4><a href="link">NOT NEEEDED</a> > <a href="link">NOT NEEDED</a> > <a href="link">NEED</a><br />

HTML对于布局是不变的,唯一会改变的是链接数。

我想知道是否有人总是抓住最后一个链接的值,即使只有一个链接。

3 个答案:

答案 0 :(得分:3)

它已被反复数百次,使用正则表达式解析HTML 的危险性。

虽然我确信正则表达式足以满足这个HTML子集的要求,但我仍然相信你最好不要使用...

$dom = new DOMDocument;

$dom->loadHTML($html);

$anchors = $dom->getElementsByTagName('a');

$lastHref = $anchors->item($anchors->length - 1)->getAttribute('href');

CodePad

更强大的IMO。

答案 1 :(得分:1)

你可以试试这个:

preg_match_all("/href=\"([^\"]+)\"/",$html,$m);
$last = array_pop($m[1]);

答案 2 :(得分:0)

我同意亚历克斯;您通常不希望使用正则表达式来解析标记。如果您在使用他的示例时遇到格式错误标记的任何问题,请尝试使用整齐的扩展程序先清理它:http://php.net/manual/en/tidy.examples.basic.php