Я хотел бы получить URL-адреса с веб-страницы, которая начинается с «../category/» из следующих тегов:
<a href="../category/product/pc.html" target="_blank">PC</a><br> <a href="../category/product/carpet.html" target="_blank">Carpet</a><br>
Любое предложение было бы очень оценено.
Благодаря!
Никаких регулярных выражений не требуется. Достаточно простого запроса XPath с DOM:
$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
Это регулярное выражение ищет вашу строку ../category/
:
preg_match_all('#......="(\.\./category/.*?)"#', $test, $matches);
Все текстовые литералы используются для сопоставления. Вы можете заменить ….., чтобы сделать его более конкретным. Только \.
нужно ускользнуть. .*?
ищет строку переменной длины. И ()
фиксирует совпадающее имя пути, поэтому оно появляется в $ match. В руководстве объясняется остальная часть синтаксиса. http://www.php.net/manual/en/book.pcre.php