2012-03-11 26 views
0

私はリモートファイルからいくつかのデータを読んでいます。ここ
問題は、私は女子Goldtone 'X' CZリングのようなものを書くとき、それはガール& APOSなり、である; sのGoldtone & 4'- X & 'は、 CZリング(txtファイル)
上記のようなテキストを保持し、文字コードではなく実際の文字を表示しないように、txtファイルに書き込む方法を教えてください。
私のコードのサンプル。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)); 
+0

これは、プローバーブロックはエンコーディングの問題です。外部ファイルで使用されるエンコーディングは、出力を表示するときに使用され、.txtファイルに書き込むときに使用されます。 –

答えて

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

+0

ありがとうございますが、私は問題を解決しませんでした。私はurlからtxtファイルを読んでいて、** fgets **経由でランダムな行を読んでいます**この行はブラウザで正しく表示されますが、** fwrite **経由でこの行をtxtに書き出すと、すべての特殊文字が壊れます。 –

1

fwriteは、バイナリセーフです。つまり、エンコード処理は行われませんが、ファイルに直接フィードするだけです。あなたが書いている変数$productNameが、書かれる前にエンティティエンコードされているようです。最初に変数にhtml_entity_decodeを実行してみてください。

デフォルトでは、html_entity_decodeは一重引用符(&apos;)には触れません。 2番目のパラメータにENT_QUOTESフラグを設定する必要があります。また、3番目のパラメータにエンコードを明示的に指定することもできます。

+0

申し訳ありませんが、私は$ productNameを修正しました。私の変数は配列から値を取得します。私はリモートファイルからランダムな行を読み込みます。すべてのことがブラウザ上でうまくいくように見えますが、問題はまだそこにあります。 –

+0

'html_entity_decode'を試しましたか?それは動作するはずです。 –

+0

ええ、私は今の約2日間しようとしています。何も動作していないようです。プラットフォームの問題や何かがある、私は7 64bit、WAMPに勝っています。それは何かをしなければならないのですか? –