PHP регулярное выражение, чтобы получить конкретный URL - PullRequest
0 голосов
/ 12 апреля 2011

Я хотел бы получить URL-адреса с веб-страницы, начинающейся с "../category/", из следующих тегов:

<a href="../category/product/pc.html" target="_blank">PC</a><br>
<a href="../category/product/carpet.html" target="_blank">Carpet</a><br>

Любое предложение будет очень оценено.

Спасибо!

Ответы [ 2 ]

5 голосов
/ 12 апреля 2011

Регулярные выражения не требуются. Достаточно простого запроса 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
0 голосов
/ 12 апреля 2011

Это регулярное выражение ищет вашу строку ../category/:

preg_match_all('#......="(\.\./category/.*?)"#', $test, $matches);

Все текстовые литералы используются для сопоставления.Вы можете заменить ....., чтобы сделать его более конкретным.Только \. нужно убежать..*? ищет строку переменной длины.И () фиксирует совпадающее имя пути, поэтому оно отображается в $ match.Руководство объясняет остальную часть синтаксиса.http://www.php.net/manual/en/book.pcre.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...