fgetcsv函数不能读取csv文件中文字符串的解决方法
Jun 13, 2016 am 09:37 AM
aspnet
ソフトウェアプログラミング
读取数据函数:
<span function</span> getData(<span $file</span><span ) { </span><span $arr</span> = <span array</span><span (); </span><span if</span>((<span $handle</span> = <span fopen</span>(<span $file</span>,"r")) !== <span FALSE</span><span ) { </span><span while</span>((<span $data</span> = <span fgetcsv</span>(<span $handle</span>)) !== <span FALSE</span><span ) { </span><span $tmp</span> = <span array</span><span (); </span><span foreach</span>(<span $data</span> <span as</span> <span $key</span>=><span $v</span><span ) { </span><span $tmp</span>[] = mb_convert_encoding(<span $v</span>,"UTF-8","gbk"); <span /*</span><span 要将gbk码转为utf-8,否则会出现乱码</span><span */</span><span } </span><span $arr</span>[] = <span $tmp</span><span ; } } </span><span return</span> <span $arr</span><span ; }</span>
ログイン後にコピー
发现读取的中文字符串为空....
解决方法:将fgetcsv函数换成自定义的_fgetcsv函数
<span function</span> _fgetcsv(&<span $handle</span>, <span $length</span> = <span null</span>, <span $d</span> = ',', <span $e</span> = '"'<span ) { </span><span $d</span> = <span preg_quote</span>(<span $d</span><span ); </span><span $e</span> = <span preg_quote</span>(<span $e</span><span ); </span><span $_line</span> = ""<span ; </span><span $eof</span>=<span false</span><span ; </span><span while</span> (<span $eof</span> != <span true</span><span ) { </span><span $_line</span> .= (<span empty</span> (<span $length</span>) ? <span fgets</span>(<span $handle</span>) : <span fgets</span>(<span $handle</span>, <span $length</span><span )); </span><span $itemcnt</span> = <span preg_match_all</span>('/' . <span $e</span> . '/', <span $_line</span>, <span $dummy</span><span ); </span><span if</span> (<span $itemcnt</span> % 2 == 0<span ) </span><span $eof</span> = <span true</span><span ; } </span><span $_csv_line</span> = <span preg_replace</span>('/(?: |[ ])?$/', <span $d</span>, <span trim</span>(<span $_line</span><span )); </span><span $_csv_pattern</span> = '/(' . <span $e</span> . '[^' . <span $e</span> . ']*(?:' . <span $e</span> . <span $e</span> . '[^' . <span $e</span> . ']*)*' . <span $e</span> . '|[^' . <span $d</span> . ']*)' . <span $d</span> . '/'<span ; </span><span preg_match_all</span>(<span $_csv_pattern</span>, <span $_csv_line</span>, <span $_csv_matches</span><span ); </span><span $_csv_data</span> = <span $_csv_matches</span>[1<span ]; </span><span for</span> (<span $_csv_i</span> = 0; <span $_csv_i</span> < <span count</span>(<span $_csv_data</span>); <span $_csv_i</span>++<span ) { </span><span $_csv_data</span>[<span $_csv_i</span>] = <span preg_replace</span>('/^' . <span $e</span> . '(.*)' . <span $e</span> . '$/s', '$1' , <span $_csv_data</span>[<span $_csv_i</span><span ]); </span><span $_csv_data</span>[<span $_csv_i</span>] = <span str_replace</span>(<span $e</span> . <span $e</span>, <span $e</span>, <span $_csv_data</span>[<span $_csv_i</span><span ]); } </span><span return</span> <span empty</span> (<span $_line</span>) ? <span false</span> : <span $_csv_data</span><span ; }</span>
ログイン後にコピー
参考:
http://bbs.csdn.net/topics/390040230
http://hi.baidu.com/maojianlw/item/d3ee390e820cfbcb75cd3c5c
http://phpexcel.codeplex.com/(操作excel的库:phpexcel)
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7297
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29



Vue.js と ASP.NET の組み合わせは、Web アプリケーションのパフォーマンスの最適化と拡張のためのヒントと提案を提供します。

ASP.NET プログラムにおける MySQL 接続プールの使用法と最適化手法

Vue.js と ASP.NET の組み合わせにより、エンタープライズ レベルのアプリケーションの開発と展開が可能になります。

ASP.NETプログラムでMySQLに再接続するにはどうすればよいですか?

ASP.NETプログラムでMySQL接続プールを正しく構成して使用する方法は?

Linux 上の Visual Studio を使用した ASP.NET 開発の推奨構成
