从 PHP 字符串中删除控件字符
如何从 PHP 字符串中删除 STX 等控制字符?我玩了一下
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
但发现它删除了很多。有没有办法只删除控件字符?
如何从 PHP 字符串中删除 STX 等控制字符?我玩了一下
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
但发现它删除了很多。有没有办法只删除控件字符?
如果你的意思是控制字符的前32个ascii字符和\x7F
(包括回车符等!),那么这将起作用:
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
(注意单引号:使用双引号会导致解析错误,不知何故。\x00
换行符和回车符(通常写成和)可以从删除中保存,如下所示:\r
\n
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
我必须说,我认为Bobby的答案更好,从某种意义上说,[:cntrl:]
更好地传达了代码的作用。[\x00-\x1F\x7F]
警告:ereg_replace
在 PHP >= 5.3.0 中已弃用,但在 PHP >= 7.0.0 中删除!,请使用以下替代:preg_replace
ereg_replace
preg_replace('/[[:cntrl:]]/', '', $input);
对于 Unicode 输入,这将从输入文本中删除所有控制字符、未分配、专用、格式设置和代理代码点(这些字符也不是空格字符,如制表符、换行符)。我用它来从输入中删除所有不可打印的字符。
<?php
$clean = preg_replace('/[^\PC\s]/u', '', $input);
有关详情,请参阅 http://www.regular-expressions.info/unicode.html#category\p{C}