Удаление якорей из текста

Мне нужно удалить теги привязки из некоторого текста и, похоже, не может это сделать с помощью regex.
Просто привязанные теги, а не их содержимое.
Например, <a href="http://www.google.com/" target="_blank">google</a> станет google .

Точно, это не может быть сделано правильно, используя регулярное выражение.

Вот пример использования DOM:

 $xml = new DOMDocument(); $xml->loadHTML($html); $links = $xml->getElementsByTagName('a'); //Loop through each <a> tags and replace them by their text content for ($i = $links->length - 1; $i >= 0; $i--) { $linkNode = $links->item($i); $lnkText = $linkNode->textContent; $newTxtNode = $xml->createTextNode($lnkText); $linkNode->parentNode->replaceChild($newTxtNode, $linkNode); } 

Важно, чтобы в DOM делались изменения в обратном направлении.

Затем вы можете попробовать

 preg_replace('/<\/?a[^>]*>/','',$Source); 

Я попробовал его здесь здесь, на рублевом

Вы ищете strip_tags() .

 <?php // outputs 'google' echo strip_tags('<a href="http://www.google.com/" target="_blank">google</a>'); 

На этот вопрос уже был дан ответ, но я подумал, что добавлю свое решение в микс. Мне это нравится лучше, чем принятое решение, потому что это немного больше.

 $content = preg_replace(array('"<a href(.*?)>"', '"</a>"'), array('',''), $content); 

с использованием регулярного выражения:

preg_replace('/<a[^>]+>([^<]+)<\/a>/i','\1',$html);

Попробуйте:

 $str = '<p>paragraph</p><a href="http://www.google.com/" target="_blank" title="<>">google -> foo</a><div>In the div</div>'; // first, extract anchor tag preg_match("~<a .*?</a>~", $str, $match); // then strip the HTML tags echo strip_tags($match[0]),"\n"; 

вывод:

 google -> foo 

Значительная часть регулярного выражения здесь мне не помогла. Некоторые из них удаляют содержимое внутри якоря (что совсем не то, о чем попросил ОП), а не весь контент в нем, некоторые из них будут соответствовать любому тегу, начинающемуся с a и т. Д.

Это то, что я создал для своих нужд на работе. У нас возникла проблема, когда передача HTML в wkhtmltopdf, которая содержала метки привязки (со многими атрибутами данных и другими атрибутами), иногда мешала созданию PDF-файла, поэтому я хотел удалить их, сохраняя текст.

Regex:

/ </? а ([^>] *)?> / ig

В PHP вы можете:

 $text = "<a href='http://www.google.com/'>Google1</a><br>" . "<a>Google2</a><br>" . "<afaketag href='http://www.google.com'>Google2</afaketag><br>" . "<afaketag>Google4</afaketag><br>" . "<a href='http://www.google.com'><img src='someimage.jpg'></a>"; echo preg_replace("/<\/?a( [^>]*)?>/i", "", $text); 

Выходы:

 Google1<br>Google2<br><afaketag href='http://www.google.com'>Google2</afaketag><br><afaketag>Google4</afaketag><br><img src='someimage.jpg'>