2009-10-09 118 views
0

通常我会这样做。在多字节字符串中将“abc123def”替换为“abc 123 def”

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

如果我知道这将是UTF-8我会一个小写的“u”的修改增加的格局,我想我会是很好的。但是由于utf-8的报告采用2x,在某些情况下,存储空间比使用本地字符集时所需的存储空间大3倍,所以我试图不将应用程序限制为utf-8。

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

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

回答

2

实现与mb_convert_encoding存储包装,所以你只需要操纵UTF-8。

(我还是觉得你应该require UTF-8和节省大家很多麻烦。)

+0

我想我最终最终要做的是继续与脚本的方式,所有的基本功能将继续使用使用mb_函数的方式,可以更改编码,并标记一些高级功能,以便它们仅在活动编码为utf-8时可用。 – joebert 2009-10-24 11:47:04

1

我认为,UTF-8编码是这样的:在127以下的字节值编码输出任何东西总是与该字节值匹配的ASCII字符,并且从不是多字节序列的一部分。所以你可以在这种情况下继续假装编码是ASCII,并且不会导致问题(因为空格和数字都是ASCII)。

请参阅​​中的说明,其中显示多字节序列中的所有字节都设置了最高有效位(例如全部> 127)。

+0

这对于UTF-8和ISO-8859-n来说是绝对正确的,但我认为他特别担心会存储更大的编码。亚洲文本更紧凑。 (我认为这不值得担心;需要UTF-8,快乐地生活。) – 2009-10-19 17:54:12

相关问题