Манипуляция строк PHP: извлечение hrefs

У меня есть строка 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)));