PHP String Manipulation: Извлечение ссылок - PullRequest
7 голосов
/ 16 января 2011

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

Спасибо, Ian

Ответы [ 4 ]

17 голосов
/ 16 января 2011

Вы можете использовать библиотеку PHPs 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');
}
1 голос
/ 16 января 2011

Ваш вопрос трудно понять, но я полагаю, что вам нужен PHP DOM Parser, вы можете найти простой dom parser здесь: http://simplehtmldom.sourceforge.net/ и небольшой пример использования:

$array = array();
foreach($html->find('a') as $a) 
{
    $array[] = $a->href;
}

youвы можете использовать jQuery, тогда у вас не должно возникнуть никаких проблем, поскольку его система выбора такая же, как jQuery, а также CSS, так как jQuery происходит от CSS

0 голосов
/ 29 мая 2019

Решение одной линии

$href = (string)( new SimpleXMLElement($your_html_tag))['href'];
0 голосов
/ 28 сентября 2016

если формат всегда один и тот же, вы, вероятно, можете разобраться с помощью комбинации разнесения и strip_tags что-то вроде

 $html="<span class="field-content"><a href="http://url_to_extract">whatever</a></span>"


 $href=end(explode('"',strip_tags($html)));
...