2012-08-24 70 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_函數就可以正常工作。