То же самое произошло со мной, и я просто переустановил человечность после фиксации окон. Я не знаю, должен ли я был сделать это, там могло бы быть более легкое решение, но оно работало на меня.
$str = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $str)
Использование SimpleHTMLDom :
<?php
// example of how to modify anchor innerText
include('simple_html_dom.php');
// get DOM from URL or file
$html = file_get_html('http://www.example.com/');
//set innerText to null for each anchor
foreach($html->find('a') as $e) {
$e->innerText = null;
}
// dump contents
echo $html;
?>
А что насчет чего-то вроде этого, учитывая, что вы, возможно, захотите повторно использовать его с другими href
s:
$str = '<a href="link.html">text</a>';
$result = preg_replace('#(<a[^>]*>).*?(</a>)#', '$1$2', $str);
var_dump($result);
Что даст вам:
string '<a href="link.html"></a>' (length=24)
(I ' м, учитывая, что вы допустили опечатку в OP?)
Если вам не нужно сопоставлять какой-либо другой href, вы можете использовать что-то вроде:
$str = '<a href="link.html">text</a>';
$result = preg_replace('#(<a href="link.html">).*?(</a>)#', '$1$2', $str);
var_dump($result);
Что также даст вам:
string '<a href="link.html"></a>' (length=24)
В качестве примечания: подробнее сложный HTML, не пытайтесь использовать регулярные выражения: они отлично работают для такой простой ситуации, но для реальной части HTML они в целом не помогают: HTML недостаточно "регулярный" "для анализа с помощью регулярных выражений.
Вы можете использовать подстроку в сочетании с stringpos, хотя это и не так очень хороший подход.
Проверьте: Руководство по PHP - Строковые функции
Другой способ - написать регулярное выражение, соответствующее вашим критериям. Но для быстрого решения вашей проблемы подойдут строковые функции ...
РЕДАКТИРОВАТЬ: Я недооценил аудиторию. ;) Продолжайте с регулярными выражениями ... ^^