ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHPチュートリアルでcsv形式ファイルから文字列を抽出する際の問題と解決策

PHP_PHPチュートリアルでcsv形式ファイルから文字列を抽出する際の問題と解決策

WBOY
WBOYオリジナル
2016-07-13 10:30:33937ブラウズ

PHP は fgetcsv() 関数を使用して csv 形式のデータを生成します。

次の文を使用してください

$hd=fopen('test.csv','r');
$buf=fgetcsv($hd,1000,',');
は、test.csv 形式のファイルを開きます。ファイルの内容は「,」文字で区切られます。

最初に取り出された行は、ID、メッセージ、時刻などの自動的な意味を表します。

2行目から始めて、1、メッセージ、12:00などの特定のデータを表します。

リーリー


当然のことながら、このステートメントの 2 行目以降の出力結果は [yes] になるはずですが、試してみると、出力がないことがわかります。

これはなぜですか?


strlen() 関数を使用して、$buf[1] と「メッセージ」の長さを比較できます。

比較の結果は不平等であることが判明しました。

なんと、どうしてそのような問題が起こるのでしょうか? 2行目の$buf[1]から取り出した値は当然「message」ですが、なぜ長さが違うのでしょうか?

これは、CSV形式ファイルのエンコード方法に関係します。


この問題を解決するにはどうすればよいですか?

まずPHPの文字エンコーディング検出関数mb_detect_encoding($buf[1],'UTF-8,EUC-CN,ASSII')を使用します

抽出されたエンコード形式が「EUC-CN」の場合は、次のステートメントを使用して utf8 エンコード形式に変換します。

PHPの文字変換関数mb_convert_encoding()、$res=mb_convert_encoding($buf[1],'UTF-8','EUC-CN')を使用します。

変換結果 $res と文字列 "message" を比較すると、最終的に等しいことがわかります。




http://www.bkjia.com/PHPjc/765066.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/765066.html技術記事 CSV 形式のデータを PHP に取り込むには、 fgetcsv() 関数を使用する必要があります。 次のステートメント $hd=fopen('test.csv','r');$buf=fgetcsv($hd,1000,','); を使用して、ファイルの内容は次で始まります。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。