从 PHP 中的字符串中删除控制字符

ran*_*its 1 php regex

我的 MySQL 数据库中有很多字符串具有控制字符,例如^M. 我想要一个在 PHP 中删除它的正则表达式,但不考虑换行等内容,例如:“\n”。

我尝试了以下方法:

preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $bad);

这似乎让它原地不动。

摆脱这些控制字符的最佳方法是什么?

Rom*_*est 5

我想要一个在 PHP 中删除它的正则表达式,但不考虑换行等内容,例如:“\n”

使用以下方法:

preg_replace("/(\x0A)|[[:cntrl:]]/", "$1", $bad);
Run Code Online (Sandbox Code Playgroud)

\x0A - 指向换行符

[[:cntrl:]] - 代表所有控制字符

(\x0A)|[[:cntrl:]] - 一次匹配换行符或某些控制字符的交替组。

$1 仅在匹配时才保存第一个换行符的捕获组