通常我会这样做。
$str = preg_replace('#(\d+)#', ' $1 ', $str);
如果我知道它将是utf-8,我会在模式中添加一个小写的“u”修饰符,我想我会很好。但由于有报道称utf-8占用了2倍的存储空间,而且使用本机字符集时占用了3倍,我试图不将应用程序限制为utf-8。
因此,我试图远离我最喜欢的preg_函数。
到目前为止,大多数事情都相当简单,但是我在替换方面有点困难,我通常在preg_中使用字符类,例如“\ d”。
答案 0 :(得分:2)
使用mb_convert_encoding
实现存储包装,因此在内部您只需操作UTF-8。
(我仍然认为你应该require UTF-8并为每个人节省很多麻烦。)
答案 1 :(得分:1)
我认为UTF-8编码使得编码输出中字节值为127或更小的任何内容始终是与该字节值匹配的ASCII字符,而不是多字节序列的一部分。所以你可以在这种情况下继续假装编码是ASCII而不会引起问题(因为空格和数字都是ASCII)。
请参阅http://en.wikipedia.org/wiki/UTF-8中的说明,其中显示多字节序列中的所有字节都设置了最高有效位(例如,都是> 127)。