从html标签和特殊字符清除字符串

时间:2012-06-04 13:26:59

标签: preg-replace strip-tags

我想从html标签,html空格字符和< > [ ] / \ * ,

等字符中清除我的文字

我使用了$str = preg_replace("/&#?[a-zA-Z0-9]+;/i", "", $str);  它适用于html特殊字符,但有些字符不会删除像: (/*/*]]>*/

如何删除这些字符?

2 个答案:

答案 0 :(得分:1)

如果你真的使用php,你可以使用:

$str = htmlspecialchars($str);

所有HTML字符都将被转义(这可能比剥离它们更好)。如果您真的只想过滤这些字符,那么您需要做的就是在字符列表中转义这些字符:

$str = preg_replace("/[\&#\?\]\[\/\\\<\>\*\:\(\);]*/i","",$str);

注意只有一个“/ [] * / i”,我删除了a-zA-Z0-9,因为你应该想要这些字符。你也可以只分类所需的字符来输入你的字符串(会给你如果使用áüü等强调问题,则必须指定每个接受的字符:

$str = preg_replace("/[^a-zA-Z0-9áÁéÉíÍãÃüÜõÕñÑ\.\+\-\_\%\$\@\!\=;]*/","",$str);

请注意,转义字符永远不会太多,除非例如间隔(\ a- \ z会很好,\ a- \ z匹配a,或 - 或z)。

我希望它有所帮助。 :)

答案 1 :(得分:0)

html标签的正则表达式是:

/\<(.*)?\>/

所以请使用以下内容:

// The regular expression to remove HTML tags
$htmltagsregex = '/\<(.*)?\>/';

// what shit will substitute it
$nothing = '';

// the string I want to apply it to
$string = 'this is a string with <b>HTML tags</b> that I want to <strong>remove</strong>';

// DO IT
$result = preg_replace ($htmltagsregex,nothing,$string);

它会返回

  

这是一个包含我要删除的HTML标记的字符串

这就是全部