2011-11-23 9 views
7

PHPでCSVファイルの行末文字を指定する正しい方法は何ですか?私はこのスクリプトを使ってCSVファイルを書きました。csvファイルのPHP終端文字

<?php 

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

include_once("phpshared.php"); 

function get_node_urls($nodeid) { 

$nodes = new SimpleXMLElement('linkcards.xml', null, true); 
$nodesarray = $nodes->xpath("//LINKCARD[@ID='$nodeid']"); 

$linkstring = ''; 
$node = $nodesarray[0]; 
$i = 0; 
foreach($node->LINKS->LINK as $url) 
{ 
     $linkstring .= $i.','.$url['ID'].','.$url->TITLE.','.$url->URL.'\r\n'; 
     $i++; 
} 
echo $linkstring; 

} 

echo get_node_urls(trim($_REQUEST['nodeid'])); 

?> 

$linkstringをロードすると、各行の最後に改行がありません。行は次のようになります。

 
0, id1, http://link1.com 
1, id2, http://link2.com 

代わりに、彼らは以下のとおりです。

 
0, id1, http://link1.com\r\n1, id2, http://link2.com 

CSVリーダーはとしてその行を読み取ります

 
id1 http://link1.com\r\n1 

のために行の終わりを書くの異なる方法がありますCSV?私は、問題が自動行末を検出によるものであることがわかっ

$linkstring .= $i.','.$url['ID'].','.$url->TITLE.','.$url->URL."\r\n"; 

答えて

9

\r\nニーズ有効ではありません。あなたのコードに設定すればうまくいくはずです。それは私のために働いた。 auto_detectで

ini_set('auto_detect_line_endings',TRUE); 

は、あなたが私の場合には

$lines = file('your_csv_file.csv'); 

を使用して通常のファイルとしてファイルを解析することができます有効にする私はすでにstr_getcsc

function parse_my_csv($filename) { 
    $lines = file($filename); 
    $data = array(); 
    for($i=0;$i<count($lines);$i++) { 
     array_push($data, str_getcsv($lines[$i])); 
    } 
return $data; 
} 
+0

+1これを使用してCSV行を解析しています正解は –

+0

です!それはうまくいった。ありがとう。 – user823527

+0

+1 Arrggghhhh!おかげさまで、PHPでの行末処理は絶対に馬鹿げています。 – demongolem

3

見た後、すべてWeb上で:ので、エスケープシーケンスは、(see documentation)解釈されます"の代わり'で囲まれる

関連する問題