Php stri_替换混乱的字符

Php stri_替换混乱的字符,php,email,character-encoding,Php,Email,Character Encoding,我通过curl获得一个页面,代码如下: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $message = curl_exec($ch); curl_close($ch); 现在,我想对$message中的代码进行一些替换,但在此之前,我将代码转

我通过curl获得一个页面,代码如下:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$message = curl_exec($ch);

curl_close($ch); 
现在,我想对$message中的代码进行一些替换,但在此之前,我将代码转储到一个文件中:

file_put_contents('debug_before_replace.txt',$message);
当我查看此文件时,所有文本似乎都很好,例如,我这里有一个标题:

<title>D.O.C.| Jantar Vínico Quinta do Portal | Quinta-feira, 25 de Junho 2009</title>
当我查看该文件时,我看到:

<title>D.O.C.| Jantar Vínico Quinta do Portal | Quinta-feira, 25 de Junho 2009</title>
感谢麦克伯迪和S.格里格为我指明了正确的方向。 我想我还有一些学习要做,当涉及到字符集


再次感谢

您正在编辑的文本很可能是UTF-8或其他多字节编码
str_ireplace()
多字节安全的,并且在单字节上运行。这会导致多字节字符可能被销毁的情况。
您还应该检查,如果文档包含Byte-Order-Mark(BOM)-这也可能会导致一些问题(根据)

您必须使用多字节感知函数来替换字符,例如


若有,该文件也可能丢失unicode用来指示UTF-8扩展字符写入的endianne的字符集,因为替换函数可能会将其视为非文本,但这纯粹是猜测。

通过curl检索的html文档的字符集是什么?是的,这可能是问题所在。可惜没有mb_str_替换。我将对此进行测试并在这里报告。再次感谢
<title>D.O.C.| Jantar Vínico Quinta do Portal | Quinta-feira, 25 de Junho 2009</title>
$message = utf8_decode(curl_exec($ch));