0

我的 UI 中有一个文本区域,我想过滤掉用户使用 preg_replace 输入的所有 xml(包括 html)文本。我需要一些帮助。

例如:

Emailed user sam at 12:15 PM
<details><email>sam@sam.com</email></details>

preg_replace 之后:

Emailed user sam at 12:15 PM

除此之外,任何指向 preg_replace 正则表达式的指针都会很棒。我尝试在 preg_replace 中使用一些 java 正则表达式(我是 PHP 新手),但发现它不起作用。我不确定我的正则表达式是否错误或 preg_replace 使用了不同类型的正则表达式。

非常感谢您的所有帮助。

4

1 回答 1

0

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

因此,在大多数情况下,以下内容将起作用,

$str_out = preg_replace('/<[\/]{0,1}\w[^>]*>/g', '', $str_in);

'/<[\/]{0,1}\w[^>]*>/g'<name stuff> 和 </name stuff> 的正则表达式在哪里。如果您在属性中有一个 > 它将失败(即<name blah=">hello">会导致hello">

虽然strip_tags是原生的,所以会更快。记住的论点是不能剥夺strip_tags的东西


编辑:如果您希望标签之间的内容也被剥离,那么正则表达式就是'/<\w[^>]*>[\s\S]*?<\/\w[^>]*>/g',但这会在更多情况下失败(即严重关闭/嵌套的标签),所以您可能想先运行它然后上面的结果来确定。

编辑:拼写

于 2012-08-22T23:33:16.480 回答