Home » Php » PHP end of line character for a csv file

PHP end of line character for a csv file

Posted by: admin July 12, 2020 Leave a comment


What is the right way to specify the end of line character of a CSV file with PHP. I have this script to write the CSV file.


ini_set('display_errors', 1);


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';
echo $linkstring;


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


If I load $linkstring there is no carriage return at the end of each line. The lines should be:

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

Instead they are:

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

The CSV reader reads that line as:

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

Is there a different way of writing the end of line for a CSV?

How to&Answers:

\r\n needs to be enclosed in " instead of ' so that escape sequences will be interpreted (see documentation):

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


After look all over the web I found that the problem is due the Auto Detect Line Ending not being enable. Just set it on your code and it should work. It worked for me.


With the auto_detect enable you can parse the file as a regular file using

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

On my case I’m already parsing the CSV lines using 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;