$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
答案 0 :(得分:0)
使用filter_var函数清理变量,链接到下面的文档。
http://php.net/manual/en/function.filter-var.php
它基本上删除了所有换行符,但清理了单词。所以 我该如何保留换行符?
将\ s +替换为一个“空格”。
答案 1 :(得分: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));