Как извлекать из строки все тэги <a>
через php
?
Есть например вот такая строка:
<div>Lorem ipsum dolor <a href='http://lorem.com' title="ipsum" class='test'>sit</a> long text. The <a href="http://earth.com">planet</a> is <b>big</b>.</div>
Идеальный результат был бы таким:
Array [
0 => "<a href='http://lorem.com' title="ipsum" class='test'>sit</a>",
1 => "<a href='http://earth.com'>planet</a>"
]
Пробовал через explode
но получается не очень хорошо, а регулярные выражения нехорошо знаю.
Для вашего случая подойдет так:
$text = "<div>Lorem ipsum dolor <a href='http://lorem.com' title=\"ipsum\" class='test'>sit</a> long text. The <a href=\"http://earth.com\">planet</a> is <b>big</b>.</div>";
$out = array();
preg_match_all('|<a.* href=.*>.*</a>|U', $text, $out);
var_dump($out[0]);
Можно еще кучу наворотов придумать, но это вы сами. Направление мы вам дали
Кому будет полезно, можете и через парсер это решить:
try {
$html = phpQuery::newDocumentHTML($string);
} catch (Exception $e) {
$html = '<div class="wrapperCode">'.$string.'</div>';
$html = phpQuery::newDocumentHTML($html);
}
$links = [];
foreach ($html->find('a') AS $key => $value) {
$value = pq($value);
$links[] = [
'content' => $value->html(),
'href' => $value->attr('href'),
'title' => $value->attr('title'),
'class' => $value->attr('class'),
];
}
использовал phpQuery
Виртуальный выделенный сервер (VDS) становится отличным выбором
Доброе утро! Подскажите пожалуйстаКак сравнить один основной массив со вторым на соответствия названия? И после это название вывести?
есть задача ограничить количество подключений за 1 секунду с одного IP адреса, сервис предоставляет API и нужно ограничить подключения пользователей...