在多字节字符串“ABC 123 DEF”替换“abc123def”
题
一般情况下我只是这样做。
$str = preg_replace('#(\d+)#', ' $1 ', $str);
如果我知道这将是UTF-8我会一个小写的“u”的修改增加的格局,我想我会是很好的。但由于在某些情况下的3倍的存储空间UTF-8以2X和报告比如果本地字符集使用它会采取,我想不限制应用程序为UTF-8。
因此,我想远离我最喜欢参看preg_功能了。
大多数事情已经相当简单,到目前为止,但我对那里的替代我通常使用的字符类中参看preg_如“\ d”有点卡住了。
解决方案
实现与 mb_convert_encoding
存储包装内,以便在内部你只需要操纵UTF-8。
(我还是觉得你应该需要UTF-8 和节省大家很麻烦。)
其他提示
我认为,UTF-8编码是这样的,在与127或更小的字节值的已编码输出任何东西总是ASCII字符匹配字节值和多字节序列的从未一部分。所以,你可以继续假装编码是在这种情况下,ASCII,而不是造成问题(如空格和数字都是ASCII)。
请参阅在 http://en.wikipedia.org/wiki/UTF-8描述它表明,在一个多字节序列的所有字节有最显著位集合(例如都是> 127)。
不隶属于 StackOverflow