Заменить названия ссылок

165
01 мая 2019, 03:50

Есть ссылки

<a href="link">название ссылки</a>
<a href="link" title="подпись">название ссылки</a>

И подобные, атрибуты внутри могут быть разные.

Мне же нужно найти и заменить только название ссылки всех ссылок которые есть в строке.

Желательно регуляркой. Буду благодарен за помощь.

Answer 1

нужно найти и заменить только название ссылки всех ссылок которые есть в строке

Если нужен только поиск, тогда можно так:

$str = '<a href="link">название ссылки 1</a>
    <a href="link" title="подпись">название ссылки 2</a>';
preg_match_all('~<a[^>]*>(.+?)</a>~', $str, $arr);
var_dump( $arr[1] );

Результат:

array (size=2)
  0 => string 'название ссылки 1'
  1 => string 'название ссылки 2'

Если поиск с заменой, тогда так:

$repl = 'Новое название ссылки';
$str = preg_replace('~(<a[^>]*>).+?(</a>)~', "$1{$repl}$2", $str);
var_dump( $str );

Результат:

<a href="link">Новое название ссылки</a>
<a href="link" title="подпись">Новое название ссылки</a>
READ ALSO
Переборка массивов. Как реализовать?

Переборка массивов. Как реализовать?

Испытываю сложность с тем, чтобы перебрать массивыГуглил несколько часов напролет -- на удивление, ничего не нашел

290
Ошибка call to a member function query() on a non-object in php mysqli

Ошибка call to a member function query() on a non-object in php mysqli

выскакивает ошибка call to a member function query() on a non-object

185
subquery doctrine 2

subquery doctrine 2

Есть запрос

198
Неоднозначный вызов функции класса

Неоднозначный вызов функции класса

Почему компилятор пишет

205