2019/1/16 追記 現在は以下の記事を参照してください。
PHP「fgetcsvはsetlocaleしないと日本語が読めない」は迷信なのか?
PHP5 で fgetcsvを使ってマルチバイト文字列を読込む際に
日本語が消える、もしくは一部消える現象が起きるのでその対策。
fgetcsvの使い方はここに書いてあります。
fgetcsv — ファイルポインタから行を取得し、CSVフィールドを処理する
注意点
この関数はロケール設定を考慮します。もし LANG が例えば en_US.UTF-8 の場合、 ファイル中
の 1 バイトエンコーディングは間違って読み込まれます。
wonder on server sideにも書いてます。
csvファイルを読み込む
今回問題となった元のデータはこれ
9033,裏面その他(モノクロ),”9033,9034,9035,9036,9037,9038,9039,9040″,,サンプル画像は見本になります。<br />記載内容に合わせ、当方にてバランス良くレイアウトをさせていただきます。
今回問題となった箇所はここ
サンプル画像は見本になります。<br />記載内容に合わせ、当方にてバランス良くレイアウトをさせていただきます。
消えた状態
<br />記載内容に合わせ、当方にてバランス良くレイアウトをさせていただきます。
で、実際の対応方法は以下のページを参考にしました。
fgetcsv関数を文字化け対応 setlocaleの文字コード指定
setlocale(LC_ALL, 'ja_JP.UTF-8');
自分の場合は上記を追加することで直りました。
※ちなみにcsvファイルは一旦以下のようにして文字コードを変更しています。
$buf = mb_convert_encoding(file_get_contents($path, &amp;quot;utf-8&amp;quot;, &amp;quot;SJIS-win&amp;quot;);