我的意思是,替换<a ...>a</a> 为空,但是如果 a 标签内部有<img 的话就不替换了
比如 $content = "asdfasdfasdf<a href=><img ></a>asdfasdf"; 这个就不替换
$content = "asdfasdfasdf<a href=></a>asdfasdf"; 这个就替换掉
但是我这么写不行,有img标签也给替换掉了
$content = "asdfasdfasdf<a href=><img ></a>asdfasdf";
$content = preg_replace("/<a.*?[^img]<\/a>/i", "", $content);
echo $content;
比如 $content = "asdfasdfasdf<a href=><img ></a>asdfasdf"; 这个就不替换
$content = "asdfasdfasdf<a href=></a>asdfasdf"; 这个就替换掉
但是我这么写不行,有img标签也给替换掉了
$content = "asdfasdfasdf<a href=><img ></a>asdfasdf";
$content = preg_replace("/<a.*?[^img]<\/a>/i", "", $content);
echo $content;
$content = preg_replace("/<a.*?(?!img)<\/a>/i", "", $content);
$str = "<a href='casd' >cay </a> <a href='casd' ><img />cay </a> ";
function imgcheck($str){
return preg_match("/<img[^>]+?>/",$str[0])?$str[0]:'';
}
echo preg_replace_callback("/(<a[^>]+?>.+?<\/a>)/","imgcheck",$str);php是非常强大的~~~
[code=PHP]
$str_s = preg_replace('/<a[^>]+>(?![^<>]+<img).*?<\/a>/im' , '' , $str);echo htmlspecialchars($str_s);?>
[/code]