假设我有UTF-8
这样的文字:
âàêíóôõ <br> âàêíóôõ <br> âàêíóôõ
我想将<br>
替换为<br />
。我需要使用mb_str_replace
还是我可以使用str_replace
?
Consindering <
b
r
/
>
都是单字节字符?
答案 0 :(得分:4)
由于str_replace
是二进制安全的,UTF-8是双射编码,因此即使搜索字符串或替换包含多字节字符,您也可以使用str_replace
,只要所有三个参数都是编码为UTF-8。
这就是为什么首先没有mb_str_replace
功能的原因。
如果您的编码不是双射的 - 即同一个字符串有多个表示形式,例如UTF-7中的<
,可以表示为'+ADw-'
和'<'
,你应该将所有字符串转换为相同(双射)编码,应用str_replace
,然后将字符串转换为目标编码。
答案 1 :(得分:2)
Reference for manipulating UTF-8 strings safely in PHP。没有严格的规则。一些原生的PHP字符串函数函数可以在utf-8上安全地运行,有些可以小心操作,有些则不能。
没有mb_str_replace()
。请注意“UTF-8安全功能”部分:explode()
和str_replace()
是安全的,只要它的所有三个参数都是有效的UTF-8字符串。