Извлекать из строки тэги a - php

163
29 ноября 2018, 00:40

Как извлекать из строки все тэги <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 но получается не очень хорошо, а регулярные выражения нехорошо знаю.

Answer 1

Для вашего случая подойдет так:

$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]);

Можно еще кучу наворотов придумать, но это вы сами. Направление мы вам дали

Answer 2

Кому будет полезно, можете и через парсер это решить:

    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

READ ALSO
Как сравнить основной массив со вторым?

Как сравнить основной массив со вторым?

Доброе утро! Подскажите пожалуйстаКак сравнить один основной массив со вторым на соответствия названия? И после это название вывести?

179
Ограничение подключения по IP за 1 секунду

Ограничение подключения по IP за 1 секунду

есть задача ограничить количество подключений за 1 секунду с одного IP адреса, сервис предоставляет API и нужно ограничить подключения пользователей...

138
Swift_TransportException при отправки письма

Swift_TransportException при отправки письма

При отправки письма возникает:

206
PHP - выбрать из файла через preg_match или preg_grep

PHP - выбрать из файла через preg_match или preg_grep

Есть файл, читаю его через

190