我试图找到一个正则表达式来删除所有html特殊字符(主要是&,<,>),但保持html标记完好无损。正则表达式:保留HTML标记,只删除html特殊字符
我从数据库中得到这些信息,所以我不能确定像<和>这样的字符被替换为& gt;和& lt;
我可以设法取代&与PHP中的正则表达式如下它<:
$Value = preg_replace('/<(?!#?\/?[a-zA-Z0-9]+>)/','',$Value);
$Value = preg_replace('/&(?!#?[a-zA-Z0-9]+;)/','&',$Value);
我现在唯一的麻烦修复>标签,因为我不得不使用查找隐藏,这不允许非固定长度的RegEx。
$Value = preg_replace('/(?<!<[a-zA-Z0-9]+)>/','',$Value);
任何想法?
问候 - 托马斯
哦,不,请不要再次 – zerkms 2012-01-03 10:43:20
http://php.net/manual/en/function.htmlspecialchars.php应该帮助你。 – lfxgroove 2012-01-03 10:43:33
htmlspecialchars也会替换标签。 – 2012-01-03 10:44:52