3

私は次のコードを持っています:

while (!feof($file)) {
        $arrayOfIdToBodyPart = fgetcsv($file,0, "\t");
            if (count($arrayOfIdToBodyPart)==2){

問題は、ファイルの内容が次のようになっていることです。

39      ankle
40      tibia
41      Vastus Intermedius

等々

ifのテストでは、3つのエントリが表示されることがあります。最初のエントリは番号、2番目のエントリは名前、3番目のエントリは...emtpyです。

これにより、ifブロックが失敗し、私は悲しくなります。> = 2のifブロックテストを実行できることはわかっていますが、2つの項目があるという事実を認識させる方法はありますか?fgetcsvが行の終わりに「謎の」文字を見つけているのは好きではありません。

これはおそらく、Windowsベースのファイルエラーを実行しているUNIXサーバーですか?もしそうなら、そして私はdos2unixなしでubuntuサーバーを実行しています、どこでそれを入手できますか?

4

2 に答える 2

0

おそらく行末にタブがあります。

value<tab>value<tab><newline>

その場合、dos2unix は役に立ちません。各行を変数に読み込み、その変数を trim() してから、 str_getcsv() を使用して分割する必要がある場合があります。

于 2012-03-07T18:04:01.957 に答える
0

それらの行の最後にタブがある可能性はありますか? それらは目に見えず、見つけるのが難しいことがよくあります...再確認することをお勧めします.

また、ローカルで Windows を実行していて、サーバーが UNIX であるときに csv ファイルを操作している場合、次の行が見つかりました。

ini_set('auto_detect_line_endings', true);

多くの頭痛を軽減します。

于 2012-03-07T18:06:15.267 に答える