php4、php5によるimplode()、file()の動作の違い?
お世話になります。
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で同じように動作する方法がわからないでしょうか。
よろしくお願いいたします。