0
$txt_unclean = trim(nl2br($_POST['txt_content']));
$txt_content = strip_tags($txt_unclean, '<b><i><u><br>');
$txt_br_replace = preg_replace("/[^a-zA-Z0-9 \!\,\?\.\n s]/", '', preg_replace("!(<br(?:\s?/)?>\s*){2,}!s", "<br />\n<br />\n", $txt_content));

好的。所以我只允许每个换行符有 2 个换行符。例如,如果有 9 个换行符,那么它将用两个换行符替换它。单独这样做,我得到了成功的结果。但是,问题是当我想使用这个正则表达式清理单词时:/[^a-zA-Z0-9 \!\,\?\.\n s]/

它基本上删除了所有换行符,但清理了单词。那么如何保留换行符呢?

例如:我想要这个:

StackOverflow is amazing@$#@#$#@#@#@!#@@!




I KNOW!@$!##$$#!!#$@(*$09@*

根据我写的正则表达式,这应该是输出:

StackOverflow is amazing!!


I KNOW!!!!09
4

2 回答 2

0

使用 filter_var 函数清理变量,链接到下面的文档。

http://php.net/manual/en/function.filter-var.php

它基本上删除了所有换行符,但清理了单词。那么如何保留换行符呢?

将 \s+ 替换为一个“空格”。

于 2013-04-22T18:11:02.323 回答
0

好的,我设法使它工作。如果它有任何缺陷,请告诉我。

这是我更改的变量:

$txt_br_replace = preg_replace("/[^a-zA-Z0-9 \!\,\?\.\r\n s (<br>)]/", '', preg_replace("!(<br(?:\s?/)?>\s*){2,}!s", "<br />\n<br />\n", $txt_content));
于 2013-04-22T18:46:57.063 回答