从字符串中删除非ASCII字符

新手上路,请多包涵
阅读 485
2 个回答

正则表达式替换将是最佳选择。使用 $str 作为示例字符串并使用 :print: 匹配它,这是一个 POSIX 字符类

 $str = 'aAÂ';
$str = preg_replace('/[[:^print:]]/', '', $str); // should be aA

:print: 所做的是寻找所有可打印的字符。相反, :^print: 查找所有不可打印的字符。任何不属于当前字符集的字符都将被删除。

注意: 在使用此方法之前,您必须确保您当前的字符集是 ASCII。 POSIX 字符类同时支持 ASCII 和 Unicode,并且只会根据当前字符集进行匹配。自 PHP 5.6 起,默认字符集为 UTF-8。

原文由 Chris Bornhoft 发布,翻译遵循 CC BY-SA 3.0 许可协议

我的问题解决了

$text = 'Châu Thái  Nhân 12/09/2022';
echo preg_replace('/[\x00-\x1F\x7F]/', '', $text);
//Châu Thái  Nhân 12/09/2022

原文由 Nhan Chau KP 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题