Hello i want to extract links <a href="/portal/clients/show/entityId/2121" >
and i want a regex which givs me /portal/clients/show/entityId/2121 the number at last 2121 is in other links different any idea?preg_match_all <a href
ответ
Regex для синтаксического анализа ссылок что-то вроде этого:
'/<a\s+(?:[^"'>]+|"[^"]*"|'[^']*')*href=("[^"]+"|'[^']+'|[^<>\s]+)/i'
Учитывая то, как ужасно это, я бы рекомендовал использовать Simple HTML Dom для получения ссылки, по крайней мере. Затем вы можете проверить ссылки, используя какое-то очень основное регулярное выражение на ссылке href.
это работало для меня $ patterndocumentLinks = '/ ] + |" [^ "] *" | \ '[^ \'] * \ ') * href = ("[^"] +" | \ '[^ \'] + \ '| [^ <> \ s] +)/я'; спасибо – streetparade
@streetparade Вы, вероятно, хотите избежать включения кавычек, ограничивающих значения атрибутов в ваших захваченных значениях, таким образом, соответствующим образом отредактируйте парсеры захвата регулярных выражений: '/ ] + | "[^"] * "| \ '[^ \'] * \ ') * HREF = "([^"] +)" | \ '[^ \'] + \' | [^ <> \ s] +/я» –
Paring links from HTML can be done using am HTML parser.
When you have all links, simple get the index of the last forward slash, and you have your number. No regex needed.
hmm .. $ html-> find ('href') или что? – streetparade
Я не знаю. Из чего это происходит (...)? –
Simple PHP HTML Dom Parser пример:
// Create DOM from string
$html = str_get_html($links);
//or
$html = file_get_html('www.example.com');
foreach($html->find('a') as $link) {
echo $link->href . '<br />';
}
это дало бы это как результат « – streetparade
, но я бы только извлек/portal/clients/show/entityId/4636, так что это сработало '/ ] + |" [^ "] *" |' [^ '] *') * href = ("[^"] + "| '[^'] + '| [^ <> \ s] +)/i' – streetparade
@streetparade мой плохой, забыл сказать $ link-> href, отредактировал – karim79
Когда «разбор» html, я в основном полагаюсь на PHPQuery: http://code.google.com/p/phpquery/, а не регулярное выражение.
Don't use regular expressions for proccessing xml/html. Это можно сделать очень легко с помощью builtin dom parser:
$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";
}
Это мое решение:
<?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 на основе парсеров, потому что вы не всегда будете знать, ли документ/веб-сайт был хорошо сформирован.
С наилучшими пожеланиями
- 1. preg_match_all Получить ссылки от <a href="" with Class
- 2. Получение HREF тега <a> с preg_match_all и curl
- 3. Понимание <a href = "#!"
- 4. jQuery Добавление <a href = "#"
- 5. <a href=...> syntax
- 6. JQuery Pull <a href
- 7. <a href=""></a> не работает
- 8. Javascript - <a href></a> внутри оповещения
- 9. echo <a href="#"></a> in php
- 10. Присоединение <a href></a> в GROUP_CONCAT()
- 11. createElement <a href=variable1>variable2</a>
- 12. как использовать preg_match_all, чтобы удалить <a> тег
- 13. Использование preg_match_all для фильтрации <a> TAG текст
- 14. Как получить текст между <a href> and</a> в php
- 15. Используйте preg_match_all, чтобы вытащить все <a href links that are NOT mailto: links
- 16. Получить полный путь от <a href ="/..."> and <a href = "..">
- 17. Получить все внутри <a></a> regexp
- 18. В тегах <td><a href="....."></a></td> DOUBLE_WHITESPCE в запросе href
- 19. Html лица в <a href=
- 20. <a href> Breaks Text Formatting
- 21. Понимание «javascript: ...;» in <a href=" ">
- 22. Smooth Scrolling с <a href='#'>
- 23. Регулярное выражение совпадало <a href="mailto:
- 24. Попытка изменить href <a> тег
- 25. Отключить href в <a> тег
- 26. button_to к <a href ="">
- 27. Альтернатива href, вероятно, без <a>
- 28. Checkbox в <a href> tag
- 29. Объединение двух <a> ссылок href
- 30. имитировать "<a href>" in Angular
вы хотите извлечь '2121' от '/ портала/клиентов/шоу/EntityId/2121' с помощью регулярных выражений? – halocursed
нет, я хочу извлечь '/ portal/clients/show/entityId/2121' другая ссылка может иметь разное число, а вместо этого 2121 любая идея? – streetparade