@michaelromanov90

Как с помощью DomDocument удалить или заменить «битую» ссылку?

Подскажите как удалить или заменить "битую" ссылку через DomDocument

чтобы находилось подобное:
<a href="http://yandex.ru"></a>
<a href=""></a>
<a href="">asdasd</a>
<a href="" target="_blank">asdasd</a>
<a></a>
<a><p>......


В DomDocument я ищу теши без свойства href например, а потом пытаюсь удалить эту ссылку, но не всё что нужно удаляется из -за (как я думаю из-за того, что в родителе может быть более 1ого дочернего элементе и при удалении - удаляется только 1ый)

foreach ($links as $link){
    if($link->getAttribute('href') == false){
        $link->parentNode->removeChild($link);
    }
}


asdasd asdasdasdas dasd <a target="_blank">link</a> asdasdasdsadasda sdas dasd asdasd sad <a target="_blank">являются</a> sadsadsad


удалится только 1ая ссылка, т.к. у них 1н родитель. Если я снова пройдусь циклом, то удалится и 2ая, но я же не знаю, сколько ссылок может быть у 1ого родителя.. Подскажите как быть плиз)
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 3
@yii16
if(strpos($mystring, 'href=""') !== false || strpos($mystring, '></a>') !== false){
    echo 'в строке есть пустая ссылка или пустой url';
}
Ответ написан
https://regex101.com/r/UczLYE/2

all = document.querySelectorAll('a[href=""]');
all.forEach(function(el) {
	el.remove();
});
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Всё просто:
  1. Предварительно получаем все href-строки из текста HTML-разметки: https://regex101.com/r/sCOA59/2/
  2. Находим все совпадения ("битые" ссылки) и заменяем через preg_replace: https://regex101.com/r/G8mCYo/1

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы