Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除除换行符、回车符、制表符和间距以外的所有控制字符和非打印字符_Php_Regex_Preg Replace - Fatal编程技术网

Php 删除除换行符、回车符、制表符和间距以外的所有控制字符和非打印字符

Php 删除除换行符、回车符、制表符和间距以外的所有控制字符和非打印字符,php,regex,preg-replace,Php,Regex,Preg Replace,请原谅,但当我看正则表达式时,它就像山羊盯着新篱笆 这个(/\p{C}+/u)似乎工作正常,但去掉了换行符/回车符和制表符: $str = " <pre> te" . chr(31) . "st test </pre> "; echo $str; echo preg_replace('/\p{C}+/u', '',$str); $str=” te”。chr(31)。“圣 测试 "; echo$str; echo preg_替换('/\p{C}+/u',

请原谅,但当我看正则表达式时,它就像山羊盯着新篱笆

这个(
/\p{C}+/u
)似乎工作正常,但去掉了换行符/回车符和制表符:

$str = "
<pre>
    te" . chr(31) . "st

   test
</pre>
";

echo $str;
echo preg_replace('/\p{C}+/u', '',$str);
$str=”
te”。chr(31)。“圣
测试
";
echo$str;
echo preg_替换('/\p{C}+/u',''$str);
我怎样才能把它们留在里面?

试试:

$str=”
te”。chr(31)。“圣
测试
";
echo$str;
回声“====================================================”,“\n”;
echo preg_替换('/[^\P{C}\s]+/u',''$str);

我刚刚对属性
\p{C}
求反,并将其添加到一个包含所有空格字符的求反字符类中。

我花了几个小时试图弄清楚为什么每次我试图对数据库中的字符串进行json解码时,它都会崩溃。最后,我把它缩小到一个特定的记录,并认为字符串中一定有一个坏字符,我必须保留换行符,但想删除破坏json_解码的坏字符。。。经过几个小时的搜索,我发现你的答案非常有效。如果你4年前没有回答这个问题,我可能会花上几个小时来解决这个问题。多谢各位
$str = "
<pre>
    te" . chr(31) . "st

   test
</pre>
";

echo $str;
echo '=====================================',"\n";
echo preg_replace('/[^\P{C}\s]+/u', '',$str);