Замена всех ссылок 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 группы:
- Класс ссылки.
- Ссылку (значение href).
- Какие-то, к примеру, атрибуты ссылки после ((.*?) - можно удалить. Тогда получим три группы без chto-to; добавил для наглядности и мало ли что там понадобится ещё).
- Текст ссылки