2012-08-24 69 views
3

我一直在寻找UTF8安全的替代字符串操作函数。我发现了很多不同的意见和建议。我想问问下面的函数是否会导致UTF-8出现问题,如果有,我应该用什么来代替。我知道PHP手册中mb_前缀函数的列表,但并不是我正在使用的所有函数。PHP多字节替代UTF8

功能有:内爆,爆炸,str_replace函数,的preg_match,preg_replace函数

谢谢

+1

'preg_'系列函数可以与unicode一起工作,但您需要在参数中指定您在字符串中使用unicode。 –

+0

@AleksG感谢您的回复。你知道爆炸,爆炸和str_replace是什么吗? – sczdavos

+0

这些都是UTF-8安全的,只要所有内容都是有效的UTF-8。没有有效的UTF-8字节序列是某些其他UTF-8字节序列的子字节字符串。 – Esailija

回答

1

如果您需要安全地UTF8字符操作,你可以做这样的:

mb_internal_encoding('UTF-8'); 
preg_replace('`...`u', '...', $string) // with the u (unicode) modifier 
+3

'mb_internal_encoding'只对'mb_'函数有用。它与'preg_'函数无关。 – deceze

+0

我敢不同意 – Peon

+0

好的,如你所愿。 – deceze

5

explode只是寻找一个相同的字节序列,并在该点分开字符串。由于UTF-8安全地向后兼容ASCII,因此不用担心,它可以正常工作。 implode只是将字符串组合在一起,由于UTF-8的属性,它也可以正常工作。 str_replace的工作原因相同。只要您使用/u modifierpreg_函数就可以正常工作。