【发布时间】:2017-06-20 04:23:25
【问题描述】:
我的 MySQL 数据库中有很多字符串,其中包含控制字符,例如 ^M。我想要一个在 PHP 中删除它的正则表达式,但只留下诸如换行之类的东西,例如:“\n”。
我尝试了以下方法:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $bad);
这似乎让它留在原地。
摆脱这些控制字符的最佳方法是什么?
【问题讨论】:
-
有这样的字符串的例子吗?
-
您或许可以从数据库端解决这个问题:dba.stackexchange.com/questions/97518/…
-
@RomanPerekhrest 我不完全确定如何输入控制字符 ^M。在 vim 中,您可以执行 ctrl+v+m,但不能只是在此处复制/粘贴该输出。建议?
-
当然,这个正则表达式会留下换行符(0x0A),它们不匹配。如果您想知道正则表达式应该是什么,那么您需要比“控制字符”和您使用的字符集更具体。
-
理想情况下,我认为 12 月 0-31 日的所有内容都应该匹配,而不要理会“\r\n”。 asciitable.com