【发布时间】:2011-02-07 19:25:04
【问题描述】:
我有一组字符串,其中一些是由非 ascii 字符组成的。 如何使用 php 脚本获取仅包含 ascii 字符的字符串。
非常感谢您的任何指导..
【问题讨论】:
-
如果字符串包含非 ascii 字符,您要忽略整个字符串、只忽略字符还是替换字符?
-
ASCII 字符包括不可打印字符?
我有一组字符串,其中一些是由非 ascii 字符组成的。 如何使用 php 脚本获取仅包含 ascii 字符的字符串。
非常感谢您的任何指导..
【问题讨论】:
<?php
echo preg_replace('/[^(\x20-\x7F)]*/', '', 'Standard ASCII and some gärbägè');
?>
【讨论】:
^,并假设十六进制代码用于超出可打印范围的内容。会把它归咎于缺乏咖啡:) 谢谢你让我直截了当。
可能最简单的选择是使用iconv 函数(如果iconv 扩展可用),使用//IGNORE 或//TRANSLIT 选项(请参阅文档),如果行为适合您的需要。
【讨论】:
a^Xb(^X 是一个控制字符)。 iconv 永远不会删除它,因为^X 不是它理解的任何编码的一部分。它曾经使用//IGNORE 将其删除,但如果您关注 iconv 顶部评论中的错误,您会发现情况不再如此。