我想从以下这些标记中以“../category/”开头的网页获取网址:
<a href="../category/product/pc.html" target="_blank">PC</a><br>
<a href="../category/product/carpet.html" target="_blank">Carpet</a><br>
非常感谢任何建议。
谢谢!
答案 0 :(得分:5)
不需要正则表达式。使用DOM的简单XPath查询就足够了:
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//a[starts-with(@href, "../category/")]');
foreach ($nodes as $node) {
echo $node->nodeValue.' = '.$node->getAttribute('href').PHP_EOL;
}
将打印:
PC = ../category/product/pc.html
Carpet = ../category/product/carpet.html
答案 1 :(得分:0)
此正则表达式搜索您的../category/
字符串:
preg_match_all('#......="(\.\./category/.*?)"#', $test, $matches);
所有文字文字都用于匹配。您可以替换.....以使其更具体。只有\.
需要转义。 .*?
查找可变长度字符串。 ()
捕获匹配的路径名称,因此它出现在$ matches中。该手册解释了其余语法。 http://www.php.net/manual/en/book.pcre.php