@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ого родителя.. Подскажите как быть плиз)
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ответы на вопрос 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.ru
Всё просто:
  1. Предварительно получаем все href-строки из текста HTML-разметки: https://regex101.com/r/sCOA59/2/
  2. Находим все совпадения ("битые" ссылки) и заменяем через preg_replace: https://regex101.com/r/G8mCYo/1

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

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

Войти через TM ID
Похожие вопросы
Zaymigo Нижний Новгород
от 20 000 до 100 000 руб.
Devmasterz Тюмень
от 80 000 до 120 000 руб.