0

通常我会这样做。

$str = preg_replace('#(\d+)#', ' $1 ', $str);

如果我知道它将是 utf-8,我会在模式中添加一个小写的“u”修饰符,我想我会很好。但是由于 utf-8 占用的存储空间是使用本机字符集的 2 倍,在某些情况下是 3 倍,因此我试图不将应用程序限制为 utf-8。

因此,我试图远离我最喜欢的 preg_ 函数。

到目前为止,大多数事情都相当简单,但我有点卡在我通常在 preg_ 中使用字符类的替代品上,例如“\d”。

4

2 回答 2

2

在内部实现一个存储包装器,mb_convert_encoding您只需要操作 UTF-8。

(我还是觉得你应该要求UTF-8,省去大家很多麻烦。)

于 2009-10-09T04:18:19.437 回答
1

我认为 UTF-8 编码使得编码输出中字节值为 127 或更少的任何内容始终是与该字节值匹配的 ASCII 字符,而不是多字节序列的一部分。因此,在这种情况下,您可以继续假装编码是 ASCII 而不会引起问题(因为空格和数字都是 ASCII)。

请参阅http://en.wikipedia.org/wiki/UTF-8中的描述,其中显示多字节序列中的所有字节都设置了最高有效位(例如,全部 > 127)。

于 2009-10-09T04:35:45.643 回答