我正在向第三方网站发出 cURL 请求,该网站返回一个文本文件,我需要在该文件上进行一些字符串替换,以将某些字符替换为它们的 html 实体等效项,例如我需要替换í为í.
直接在响应上使用string_replace/preg_replace_callback不会导致匹配(无论是í直接搜索还是使用其十六进制代码\x00\xED),所以我utf8_encode()在执行替换之前使用了。但将所有字符utf8_encode替换为.íÃ
为什么会发生这种情况,使用 php 对任意一段文本执行 UTF-8 替换的正确方法是什么?
*编辑 - 一些进一步的研究表明
utf8_decode("í") == í;
utf8_encode("í") == ÃÂ;
utf8_encode("\xc3\xad") == ÃÂ;