2017-01-18 9 views
0

fwriteを使用してcsvファイルにエクスポートされるセミコロン区切りのリストがあり、配送データが問題を引き起こしています。問題の 生データはfwriteを使用してcsvにエクスポートするときのエンコードの問題

Shipping (Interlink Express ( 20.88)) 

のように見えますが、これは明らかに、HTMLエンティティにおけるセミコロンのためにレイアウトを壊します。私は以前にutf8_decodeを使用していたとして、その後がhtml_entity_decode、その後utf8_decodeしようとしなかった

Shipping (Interlink Express (€20.88)) 

私は

$xml_orders .= html_entity_decode($method).";"; 

$xml_orders .= $method.";"; 

を置き換えることで、この問題を解決できると思っていたが、それが今私に

を与える ñが出力されていた問題を修正しましたが、問題は修正されませんでした。

これに最適な解決策は何ですか?

+0

あなたが3番目のパラメータを使用してhtml_entity_decode' 'で使用される文字セットを設定することができます。以下の例を参照してくださいHTTPを参照してください。 //php.net/manual/fr/function.html-entity-decode.php –

+0

これは、あなた自身がCSV文字列データを組み立てようとした場合にのみ「中断」し、そのような特別なケースを考慮に入れなかった場合。適切な解決策は、PHPが提供する関数 'fputcsv'を使用することです。 – CBroe

答えて

1

セミコロンをエスケープする必要があります。 最良の方法は、すべてのcolumunを二重引用符で囲むことです。したがって、csvファイルは単一の値として読み取ることができます。 colum内部の二重引用符をエスケープするために、あなたが「」の2つを追加する必要が

Col1;Col2;Col3; 
Col1; "Col2 ; i need to escape it"; Col3; 
Col1; Col2; "Col3 with escape of ; and ""quotes"""; 

関連する問題