お世話になります。
SJISのファイルで、
//----コメント
//あああ
//---------------
あああ,いいいいいいいいいいいいい
ううううう,えええええええええええええ
のようなファイルを作成して
$csv へこSJISファイルのファイルパスを設定し、
$FielList = mb_convert_encoding(@implode('', @file($csv,FILE_SKIP_EMPTY_LINES)), "UTF-8", "SJIS");
$RowData = split("\r\n",$FielList);
foreach($RowData as $Value) {
$FName=trim($FName);$Cmnt=trim($Cmnt);
echo '$FName='.$FName.'<br> $Cmnt='.$Cmnt.'<br>';
}
と、その内容を見ると
php5では、
$FName=//あああ
$FName=//---------------
$FName=あああ
$Cmnt=いいいいいいいいいいいいい
$FName=ううううう
$Cmnt=えええええええええええええ
と、想定の結果が得られます。
しかし、php4だと、
$FName=//あああ//---------------
となってしまい、どうもcsvファイルの内容が\r\nにより仕切られて配列とならないようです。
そこで、
$FielList = mb_convert_encoding(@implode('###', @file($csv,FILE_SKIP_EMPTY_LINES)), "UTF-8", "SJIS");
$RowData = split("###",$FielList);
とすれば、php4,php5でも動作します。
また、
$FielList = mb_convert_encoding(@implode('', @file($csv,FILE_SKIP_EMPTY_LINES)), "UTF-8", "SJIS");
$RowData = split("\n",$FielList);
とすると、php4で予想の結果が返されますが、
php5では、echo で何も表示されなくなります。
ません。
php4、php5による
\r\nの扱いの違い
implode()の動作の違い
file()の動作の違い
だと思うのですが、どのように違うのかがわかりません。
このあたりのことをおわかりの方、
implode('###',@file(・・・ )
と記述しなくても
implode('',@file(・・・ )
と記述することによりphp4、php5で同じように動作する方法がわからないでしょうか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
php4と5で動作が違うようなソースとは思えないけど、foreach で表示している変数名が違うので、ちゃんとデータの確認が出来てるのか疑問ですけど。
わざわさくっつけて分解するより mb_convert_variables() (php4.0.6以降)で配列のまま変換した方がいいと思う。内部では、implode,explodeを行っていますので同じことですが。
$RowData = file($csv,FILE_SKIP_EMPTY_LINES);
mb_convert_variables("UTF-8", "SJIS", $RowData ) ;
var_dump($RowData );
それから、デバッグ中は、エラー出力するようにした方がよいです、本当の問題が@により隠蔽されてるかもしれません。
この回答への補足
hrm_mmmさん、今日は。
できました。
>$RowData = file($csv,FILE_SKIP_EMPTY_LINES);
>mb_convert_variables("UTF-8", "SJIS", $RowData ) ;
と、したところ、PHP4、5でダンプにも差がなくなりました。
どうもありがとうございました。
hrm_mmmさん、お早うございます。レスありがとうござ益す。
>php4と5で動作が違うようなソースとは思えないけど
そうですか。
>mb_convert_variables()
このような関数が合ったのですね。
知らなかったものですからimplode,explodeを行いました。
早速試してみます。
でも、php4のサーバは、職場からでないとアクセスできません。
今日明日は、休みなので月曜に早速アップして試してみます。
結果ご報告させていただきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 値の取り出し方について教えて下さい。 1 2023/03/31 13:30
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
PHP一覧表示した項目にリンクを...
-
PHPSpreadsheetを使って関数を...
-
アップロード画像数でCSSを分け...
-
ワードプレスサイト PHP8.0.25...
-
入力フォームの空白や改行を制...
-
オススメのプログラミングスク...
-
htmlのエラーについて(デバッグ)
-
SFTPなどは使わないホームペー...
-
php 完了画面の送信メールのコ...
-
phpでPEAR::DBを使っているので...
-
index.phpって何ですか? 具体...
-
PHP8を使うと、大量のWarningが...
-
掲示板のセキュリティについて...
-
メールフォームのタイトルが文...
-
php 入力画面から確認表示画面...
-
ワードプレスプラグイン MW WP ...
-
phpのメールフォームの完了画面...
-
PHPとHTML+Xamppの掲示板で画像...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
値の取り出し方について教えて...
-
2つの画像ファイルが異なるファ...
-
PHPでFilename cannot be empty...
-
ファイル名は、数字の「0」(...
-
stat failed
-
ファイルの行数取得
-
TSVファイルをCSV形式に変換したい
-
日本語のファイルが開けない
-
XMLのロードに失敗する
-
別のサーバにあるファイルの存...
-
PHP+MySQL でのcsvファイルイン...
-
日本語のデータが文字化けをし...
-
日本語が文字化けしないよう読...
-
PHPでの別のサーバーのテキスト...
-
phpメールフォームから送信・登...
-
PHP、ファイルロックの失敗で消...
-
PHP5のsimplexml_load_fileで取...
-
PHPでAPI 出力はCSVを取得する...
-
PHPでテキストファイルかどうか...
-
PHPで特定の文字列のみ抽出し、...
おすすめ情報