用PHP剥离整个html链接(包括文本)
我有一个文本集合,我正试图用PHP动态处理它(数据来自XML文件),但是我想去掉a链接和链接的文本 PHP的strip_标记去掉用PHP剥离整个html链接(包括文本),php,regex,Php,Regex,我有一个文本集合,我正试图用PHP动态处理它(数据来自XML文件),但是我想去掉a链接和链接的文本 PHP的strip_标记去掉和,但不去掉中间的文本 我目前正在尝试使用Regexpreg_replace(“#()*?())”、“$content”) 另一件需要注意的事情是链接有样式、类、href和标题 有人知道解决方案吗?因为a元素不是在线元素,可能会破坏您的页面,所以您最好使用白名单方法,例如使用regex,但未经过彻底测试 echo preg_replace('#(<a.*?>
和
,但不去掉中间的文本
我目前正在尝试使用Regexpreg_replace(“#()*?())”、“$content”)代码>
另一件需要注意的事情是链接有样式、类、href和标题
有人知道解决方案吗?因为a元素不是在线元素,可能会破坏您的页面,所以您最好使用白名单方法,例如使用regex,但未经过彻底测试
echo preg_replace('#(<a.*?>)(.*?)(<\/a>)#','$2', $str);
echo preg_replace('#()(.*)()#','$2',$str);
另外,设置为-1的limit
参数将其设置为no limit。您可以使用,例如(未测试!):
试试这个:
$content=preg_replace('/<a[^>]*>(.*)<\/a>/iU','',$content);
$content=preg_replace('/]*>(.*)/iU',''.$content);
我使用了作为评论发布的解决方案,它们似乎效果最好,正是我想要的
“作为参考,您对锚定标记进行了分组,但没有对内容进行分组,这就是问题所在。preg_replace将替换分组的元素(包括在括号中的元素)。您可以尝试以下操作:(]*?>*?>。?)#i
(i标志用于不区分大小写的比较)–Brad Christie”
“简单测试了较短的正则表达式版本,只是为了好玩:)preg_replace('/]*>/','$data);
”–昨天的Cyber Guard设计对不起,我真的不知道你的意思…?我不知道你到底想要什么,但通常你应该指定哪些标签是允许的,哪些是不允许的。如果由于安全问题而要删除标记,请考虑iframe、img或link.(related)作为参考,您已经对锚标记进行了分组,但没有对内容进行分组,这就是问题所在。preg_replace替换分组元素(括号中包含的元素)。不过,您可以尝试以下操作:#(]*?>.*)i
(i标记用于不区分大小写的比较)经过简短测试的较短正则表达式版本,只是为了好玩:)preg\u replace('/]*>/','$data)代码>@Cyber Guard设计-我不认为它过于复杂。它肯定比正则表达式更可靠。太棒了!现在我明白了学好正则表达式的原因了!我如何剥离标签,但不剥离带有“
$html = file_get_html('http://www.example.com/');
foreach($html->find('a') as $element) {
$element->outertext = '';
}
$html->save('output.html');
$content=preg_replace('/<a[^>]*>(.*)<\/a>/iU','',$content);