Замена всех ссылок HTML на определенный тег без атрибута href

Имеется список:

<ul>
  <li>
    <a class="linkClass" href="urlpage">Название ссылки</a>
  <li>
  <li>
    <a class="linkClass" href="urlpage">Название ссылки</a>
  <li>
</ul>

Каким способом можно убрать или заменить тег ссылки, убрав из него всё, кроме класса (или убрать и его, но не желательно). Представляю себе регулярку, которая ищет ссылки с данным классом и вставляет нужную структуру с сохранением текста. Ссылки и текст могут быть разными в каждом теге <li>.


Ответы (1 шт):

Автор решения: Pr0gramm1st

Если в общих чертах, то можно попробовать вот так:

$pattern = '/<a(.+?)href="(.+?)"(.*?)<\/a>/i;
$str = '<a class="linkClass" href = "urlpage" data-link="chto-to">Название ссылки</a>';
$replace = '<div$1data-href="$2"$3>$4</div>';
$result = preg_replace($pattern, $replace, $str);

echo $result;

Из регулярного выражения мы получим 4 группы:

  1. Класс ссылки.
  2. Ссылку (значение href).
  3. Какие-то, к примеру, атрибуты ссылки после ((.*?) - можно удалить. Тогда получим три группы без chto-to; добавил для наглядности и мало ли что там понадобится ещё).
  4. Текст ссылки
→ Ссылка