2012-02-06 84 views

回答

4

由於str_replace是二進制安全的,UTF-8是雙射編碼,即使搜索字符串或替換包含多字節字符,只要所有三個參數都編碼爲UTF-8,即可使用str_replace

這就是爲什麼首先沒有mb_str_replace函數。

如果你的編碼不​​是雙射 - 即有相同的字符串的多種表示,例如<在UTF-7,它可以作爲'+ADw-''<'表示兩者,則應該將所有的字符串轉換爲相同的(雙射)編碼,應用str_replace,然後將字符串轉換爲目標編碼。

+0

雙射編碼? O_O – dynamic 2012-02-06 19:21:22

+0

所以基本上UTF-8我可以忘記'mb_str_replace'?考慮到「UTF-8」,我可以忘記哪些其他mb_ *? – dynamic 2012-02-06 19:27:02

+0

例如'mb_substr_count();'? – dynamic 2012-02-06 19:28:47

2

Reference for manipulating UTF-8 strings safely in PHP。沒有硬性規定。一些原生的PHP字符串函數函數可以在UTF-8上安全地運行,有些可以小心翼翼,有些則不能。

沒有mb_str_replace()。注意「UTF-8安全功能」部分:explode()str_replace()是安全的,只要它的所有三個參數都是有效的UTF-8字符串即可。