У меня есть строка HTML, которую я бы хотел проверить, чтобы увидеть, есть ли в ней какие-либо ссылки, и если да, извлеките их и поместите в массив. Я могу сделать это в jQuery с простотой своих селекторов, но я не могу найти правильные методы для использования в PHP.
Например, строка может выглядеть так:
<h1>Doctors</h1> <a title="C - G" href="linkl.html">C - G</a> <a title="G - K" href="link2.html">G - K</a> <a title="K - M" href="link3.html">K - M</a>
Как (в PHP) я могу превратить его в массив, который выглядит примерно так:
[1]=>"link1.html" [2]=>"link2.html" [3]=>"link3.html"
Спасибо, Ян
Вы можете использовать библиотеку DOMDocument DOMDocument
для анализа XML и / или HTML. Что-то вроде следующего должно сделать трюк, чтобы получить атрибут href
из строки HTML.
$html = '<h1>Doctors</h1> <a title="C - G" href="linkl.html">C - G</a> <a title="G - K" href="link2.html">G - K</a> <a title="K - M" href="link3.html">K - M</a>'; $hrefs = array(); $dom = new DOMDocument(); $dom->loadHTML($html); $tags = $dom->getElementsByTagName('a'); foreach ($tags as $tag) { $hrefs[] = $tag->getAttribute('href'); }
Ваш вопрос трудно понять, но я считаю, что вам нужен PHP DOM Parser, здесь вы можете найти простой синтаксический анализатор: http://simplehtmldom.sourceforge.net/ и небольшой пример использования:
$array = array(); foreach($html->find('a') as $a) { $array[] = $a->href; }
вы можете использовать jQuery, тогда вы сможете использовать это без проблем, поскольку его система выбора такая же, как и jQuery, а также CSS, поскольку jQuery происходит из CSS
если формат всегда один и тот же, вы, вероятно, можете отсортировать его с помощью комбинации explode и strip_tags.
$html="<span class="field-content"><a href="http://url_to_extract">whatever</a></span>" $href=end(explode('"',strip_tags($html)));