将特殊字符写入txt文件

时间:2012-03-11 10:20:27

标签: php

我正在从远程文件中读取一些数据,让每件事都工作到我将一些特定的行写入文本文件的时候。
这里的问题是,当我写一些像 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">&apos;Stellar Steed&apos; 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));

2 个答案:

答案 0 :(得分:1)

您是从远程文件中读取数据然后将其写入txt文件吗?同意上述评论,这是编码问题。请尝试以下代码:

$file = file_get_contents("messages.txt");
$file = mb_convert_encoding($file, 'HTML-ENTITIES', "UTF-8");
echo $file;

回复您的浏览器的响应并查看。如果找到了正确的,请将响应写入您的txt文件。确保您的txt文件是UTF8编码的。

检查出来:: Write Special characters in a file

答案 1 :(得分:1)

fwrite是二进制安全的,这意味着它不会执行任何编码工作,只是将您直接提供给它的任何内容写入文件。看起来你写的$productName变量在编写之前已经是实体编码的。首先尝试在变量上运行html_entity_decode

请注意,html_entity_decode默认情况下不会触及单引号(&apos;);你必须在第二个参数中设置ENT_QUOTES标志。您可能还希望在第三个参数中明确指定编码。