$v){"/> $v){">

ホームページ  >  記事  >  バックエンド開発  >  PHPがExcelファイルを読み込んで文字化けした値を出力する問題の解決策

PHPがExcelファイルを読み込んで文字化けした値を出力する問題の解決策

WBOY
WBOYオリジナル
2016-06-13 13:37:461072ブラウズ

PHP が Excel ファイルを読み取ると、出力値が文字化けします
$handle = fopen("./home.csv","r");
while($items = fgetcsv( $handle ,1000)){
foreach($items as $k=>$v){
$v = iconv('gb2312','utf-8',$v); ($ v);
}
}


-----解決策---------わかりました、この問題について話しているのです
これは php5.3 のバグです、php5.2 は正常です

それを解決するには別の方法を見つける必要があります

------解決策---------
PHP コード

$fname = $_FILES['MyFile']['tmp_name'];//アップロードされた CSV ファイルを取得します $handle=fopen("$fname","r");//ファイルを開きます //インポートされたファイルの種類が csv かどうかを判断します //csvの場合は実行を継続 if($_FILES['MyFile']['type'] !='application/vnd.ms-excel') { if($_FILES['MyFile']['type'] != 'テキスト/カンマ区切り値') { echo "<script>alert('アップロードしたファイルの種類が一致しません。再度アップロードしてください');window.location='subHotel_import.php';</script>";exit(); } } $num = 1; $total_num = 100;//毎回追加するデータ項目の数を設定します //テーブル内の元のデータを削除 $db->query("ホテル_アクティビティ_2 から削除"); //インポートしたCSVを開く //ループしてテーブルに追加 while(!feof($handle)) { $content = fgets($handle); $data = preg_split("/,/",$content); if($data[0] =='') { 続く; } $subHotel_id = preg_replace('/[^0-9]/','',$data[0]); $subHotel_type= (int)preg_replace('/[^0-9]/','',$data[4]); if($num == $total_num ) { $num=1; $values .= " ($subHotel_id,'".$data[1]."','".$data[2]."','".$data[3]."',$subHotel_type) 、" ; $values = rtrim($values,','); $sql ="hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) 値に挿入します。" .$values; $aaa = $db->クエリ($sql); $values = ''; } それ以外 { $values .= " ($subHotel_id,'".$data[1]."','".$data[2]."','".$data[3]."',$subHotel_type) 、" ; $num++; } } if(mysql_error!==1){ $values = rtrim($values,','); $sql ="hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) 値に挿入します。" .$values; $db->クエリ($sql); echo "<script>alert('インポート成功!!!');window.location='subHotel_query_file.php';</script>"; }それ以外 { echo "<script>alert('インポートに失敗しました!!!');window.location='subHotel_import.php';</script>"; } fclose($handle);

<br>------解決策---------<font color="#e78608"></font>csv形式標準:文字列が必須です 囲まれています二重引用符で囲まれていますが、Microsoft のツール ソフトウェアにはこれらの二重引用符は含まれていません<br>php5.3 より前のバージョンでは、php もこのアプローチに同意していました<br>しかし、php5.3 以降、Microsoft は非協力的な態度を採用したため、fgetcsv は無効。
<br><br>------解決策---------<font color="#e78608"></font>Excel データの読み込みにはプラグインが必要です。このように直接行うことは絶対に不可能です。 <br>以下は、ecxcel データをデータベースに読み取るメソッドです: <br>7.$handle = fopen ("test.csv","r"); <br>8.$sql="insert into sinners( idcard,names ,num,sex,nation,score) value('"; <br>9.while ($data = fgetcsv ($handle, 1000, ",")) { <br>10.$num = count ( $data); <br>11.for ($c=0; $c 12.if($c==$num-1){$sql=$sql. $data[$c]."')";break;} <br>13.$sql=$sql.$data[$c]."','"; <br>14.} <br>15. print "<br>16.echo $sql."<br>17.$db->18.echo "SQL ステートメントの実行成功しました! < br>"; <br>19.$sql="scores(idcard,names,num,sex,nation,score) に挿入します。<br>20.} <br>21.fclose ($handle); <br>22.$time_end = getmicrotime();
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。