我正在从远程文件中读取一些数据,让每件事都工作到我将一些特定的行写入文本文件的时候。
这里的问题是,当我写一些像 Girl's Goldtone'X'CZ Ring 之类的东西时,它会变成 Girl& 's Goldtone& X&者; txt文件中的CZ Ring
我如何写入txt文件,以便它保留上面写的文字,而不是显示字符代码,但显示实际字符
我的代码样本。
$content_to_write = '<li class="category-top"><span class="top-span"><a class="category-top" href="'.$linktext.'.html">'.$productName.'</a></span></li>'."\r\n";
fwrite($fp, $content_to_write);
$linktext = "Girls-Goldtone-X-CZ-Ring";
$productName = "Girl's Goldtone 'X' CZ Ring";
var_dump
string '<li class="category-top"><span class="top-span"><a class="category-top" href="Stellar-Steed-Gallery-wrapped-Canvas-Art.html">'Stellar Steed' Gallery-wrapped Canvas Art</a></span></li>
'(长度= 195)
代码
$productName =$linktext;
$linktext = str_replace(" ", "-", $linktext);
$delChar = substr($linktext, -1);
if($delChar == '.')
{
$linktext = substr($linktext, 0, -1);
}
$linktext = removeRepeated($linktext);
$linktext = remove_invalid_char($linktext);
$productName = html_entity_decode($productName);
$content_to_write = '<li class="category-top"><span class="top-span"><a class="category-top" href="'.$linktext.'.html">'.$productName.'</a></span></li>'."\r\n";
var_dump($content_to_write);
fwrite($fp, utf8_encode($content_to_write));
答案 0 :(得分:1)
您是从远程文件中读取数据然后将其写入txt文件吗?同意上述评论,这是编码问题。请尝试以下代码:
$file = file_get_contents("messages.txt");
$file = mb_convert_encoding($file, 'HTML-ENTITIES', "UTF-8");
echo $file;
回复您的浏览器的响应并查看。如果找到了正确的,请将响应写入您的txt文件。确保您的txt文件是UTF8编码的。
答案 1 :(得分:1)
fwrite
是二进制安全的,这意味着它不会执行任何编码工作,只是将您直接提供给它的任何内容写入文件。看起来你写的$productName
变量在编写之前已经是实体编码的。首先尝试在变量上运行html_entity_decode
。
请注意,html_entity_decode
默认情况下不会触及单引号('
);你必须在第二个参数中设置ENT_QUOTES
标志。您可能还希望在第三个参数中明确指定编码。