你好,我想提取链接
<a href="/portal/clients/show/entityId/2121" >
,我想要一个正则表达式,它给我 /portal/clients/show/entityId/2121 最后 2121 的数字在其他链接中不同有什么想法吗?
php - Preg_match_all
你好,我想提取链接
<a href="/portal/clients/show/entityId/2121" >
,我想要一个正则表达式,它给我 /portal/clients/show/entityId/2121 最后 2121 的数字在其他链接中不同有什么想法吗?
你好,我想提取链接
<a href="/portal/clients/show/entityId/2121" >
,我想要一个正则表达式,它给我 /portal/clients/show/entityId/2121 最后 2121 的数字在其他链接中不同有什么想法吗?
问问题
31630 次
可以使用 am HTML 解析器从 HTML 中解析链接。
当你拥有所有链接时,简单地获取最后一个正斜杠的索引,你就有了你的号码。不需要正则表达式。
6 回答
11
于 2009-10-05T12:19:33.287 回答
6
不要使用正则表达式来处理 xml/html。这可以使用内置的 dom 解析器很容易地完成:
$doc = new DOMDocument();
$doc->loadHTML($htmlAsString);
$xpath = new DOMXPath($doc);
$nodeList = $xpath->query('//a/@href');
for ($i = 0; $i < $nodeList->length; $i++) {
# Xpath query for attributes gives a NodeList containing DOMAttr objects.
# http://php.net/manual/en/class.domattr.php
echo $nodeList->item($i)->value . "<br/>\n";
}
于 2009-10-05T12:28:57.987 回答
1
用于解析链接的正则表达式是这样的:
'/<a\s+(?:[^"'>]+|"[^"]*"|'[^']*')*href=("[^"]+"|'[^']+'|[^<>\s]+)/i'
鉴于这有多可怕,我建议至少使用Simple HTML Dom来获取链接。然后,您可以在链接 href 上使用一些非常基本的正则表达式来检查链接。
于 2009-10-05T12:20:40.137 回答
1
“解析” html 时,我主要依赖 PHPQuery:http ://code.google.com/p/phpquery/而不是正则表达式。
于 2009-10-05T12:24:58.677 回答
1
这是我的解决方案:
<?php
// get links
$website = file_get_contents("http://www.example.com"); // download contents of www.example.com
preg_match_all("<a href=\x22(.+?)\x22>", $website, $matches); // save all links \x22 = "
// delete redundant parts
$matches = str_replace("a href=", "", $matches); // remove a href=
$matches = str_replace("\"", "", $matches); // remove "
// output all matches
print_r($matches[1]);
?>
我建议避免使用基于 xml 的解析器,因为您并不总是知道文档/网站是否格式正确。
最好的祝福
于 2013-10-29T23:01:34.780 回答
0
可以使用 am HTML 解析器从 HTML 中解析链接。
当你拥有所有链接时,简单地获取最后一个正斜杠的索引,你就有了你的号码。不需要正则表达式。
于 2009-10-05T12:10:53.157 回答