Как я могу удалить ссылку и остаться с текстом?
text text text. <br><a href='http://www.example.com' target='_blank' title='title' style='text-decoration:none;'>name</a>
как это:
text text text. <br>
У меня все еще есть проблема …..
$text = file_get_contents('http://www.example.com/file.php?id=name'); echo preg_replace('#<a.*?>.*?</a>#i', '', $text)
в этом URL-адресе был этот текст (со ссылкой) …
этот код не работает …
что не так?
Кто-нибудь может мне помочь?
Я предлагаю вам сохранить текст в ссылке.
strip_tags($text, '<br>');
или трудный путь:
preg_replace('#<a.*?>(.*?)</a>#i', '\1', $text)
Если вам не нужно сохранять текст в ссылке
preg_replace('#<a.*?>.*?</a>#i', '', $text)
В то время как strip_tags()
способна к базовой дезинфекции строк, это не является доказательством дурака. Если данные, которые необходимо фильтровать, поступают от пользователя, и особенно если они будут отображаться обратно другим пользователям, вы можете захотеть изучить более полный дезинфицирующее средство HTML, например, HTML-очиститель . Эти типы библиотек могут сэкономить вам много головной боли в дороге.
strip_tags()
и различные методы regex не могут и не будут останавливать пользователя, который действительно хочет что-то ввести.
Пытаться:
preg_replace('/<a.*?<\/a>/','',"test test testa<br> <a href='http://www.example.com' target='_blank' title='title' style='text-decoration:none;'>name</a>");
strip_tags()
будет лишать HTML-теги.
это мои решения:
function removeLink($str){ $regex = '/<a (.*)<\/a>/isU'; preg_match_all($regex,$str,$result); foreach($result[0] as $rs) { $regex = '/<a (.*)>(.*)<\/a>/isU'; $text = preg_replace($regex,'$2',$rs); $str = str_replace($rs,$text,$str); } return $str;}
dang tin rao vat
Еще одно короткое решение без регулярных выражений:
function remove_links($s){ while(TRUE){ @list($pre,$mid) = explode('<a',$s,2); @list($mid,$post) = explode('</a>',$mid,2); $s = $pre.$post; if (is_null($post))return $s; } } ?>
вfunction remove_links($s){ while(TRUE){ @list($pre,$mid) = explode('<a',$s,2); @list($mid,$post) = explode('</a>',$mid,2); $s = $pre.$post; if (is_null($post))return $s; } } ?>
,function remove_links($s){ while(TRUE){ @list($pre,$mid) = explode('<a',$s,2); @list($mid,$post) = explode('</a>',$mid,2); $s = $pre.$post; if (is_null($post))return $s; } } ?>