php - 从 PHP 字符串中删除控制字符

标签 php regex string

如何从 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/

相关文章:

c++ - 使用 ReadProcessMemory() 将未知大小的字符数组或字符串读入 wstring

java - 雅虎财经流解析插入MySQL数据库

php - 从登录 Laravel 6 中删除特定路由

Python str() 双引号字符串

php - 使用ckeditor在页面上编辑多个div,然后将HTML保存到文件

regex - 正则表达式后顾之忧

javascript - 匹配一个模式但只捕获它的一部分

regex - MATLAB 正则表达式拒绝删除字符串开头的空格

php - 组合两个数组值,使它们成为 key=>value 格式

php - 如何在 laravel 中用 Eloquent 方式将两个不同表中的两列相乘