Parser пример:
$string = '<h3 class="lvtitle"><a href="http://www.ebay.com/itm/Chicago-Chicago-XXX-Audio-CD-/351478948979?hash=item51d5c72473" class="vip" title="Click this link to access Chicago, Chicago XXX Audio CD">Chicago, Chicago XXX Audio CD</a></h3>';
$doc = new DOMDocument(); //make a dom object
$doc->loadHTML($string); // load the string into the object
$links = $doc->getElementsByTagName('a'); //get all links
foreach ($links as $link) { //loop through all links
echo $link->nodeValue; //output text content of links
}
Выход:
Чикаго, Чикаго XXX Audio CD
Ссылки:
http://php.net/manual/en/domelement.getelementsbytagname.php
http://php.net/manual/en/domdocument.loadhtml.php
... или если вы действительно требуется регулярное выражение, по какой-то причине (я не» почему анализатор не работает) ...
$string = '<h3 class="lvtitle"><a href="http://www.ebay.com/itm/Chicago-Chicago-XXX-Audio-CD-/351478948979?hash=item51d5c72473" class="vip" title="Click this link to access Chicago, Chicago XXX Audio CD">Chicago, Chicago XXX Audio CD</a></h3>';
preg_match_all('~<a\h.*?>(.*?)</a>~', $string, $links_content);
print_r($links_content[1]);
Выход:
Array
(
[0] => Chicago, Chicago XXX Audio CD
)
~
= Разделитель
<a
= буквально соответствует <a
\h
= а горизонтальный Пустое пространство
.*?
= ничего снимать черепицу первого появления следующего символа
>
= буквального >
(.*?)
= группировка захвата, захватывающая все до следующего символа
</a>
= буквальный </a>
~
= закрывающий ограничитель
Если вы предпочитаете regex101 писать, https://regex101.com/r/sT6yA9/1.
Также обратите внимание на preg_match_all
, в котором ваша строка содержит несколько ссылок. В одном случае вы можете использовать preg_match
.
Пытался что-нибудь? – anubhava
use html parsers –
Да, я попробовал полезную функцию для получения строк между тегами, но в этом случае это действительно не работает. –