如何从 PHP 字符串中删除 STX 等控制字符?我玩过
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
但发现它删除了很多。有没有办法删除 only 控制字符?
最佳答案
如果你的意思是控制字符 first 32 ascii characters and \x7F
(包括回车等!),那么这将起作用:
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
(注意单引号:使用双引号时使用 \x00
会导致解析错误,不知何故。)
换行和回车(通常写成 \r
和 \n
)可以像这样保存:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
我必须说我认为 Bobby's answer更好,从某种意义上说 [:cntrl:]
比 [\x00-\x1F\x7F]
更好地传达代码的作用。
警告: ereg_replace
在 PHP >= 5.3.0 中已弃用并在 PHP >= 7.0.0 中删除!请使用 preg_replace
代替 ereg_replace
:
preg_replace('/[[:cntrl:]]/', '', $input);
关于php - 从 PHP 字符串中删除控制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1497885/