I'm creating on-the-fly a CSV file to download via a hyperlink, using the following code:
$content = <<<END
data:text/csv;charset=utf-8,\xEF\xBB\xBF"Date","Number of items sold","Number of orders","Average net sales amount","Coupon amount","Shipping amount","Gross sales amount","Net sales amount","Refund amount"\n
"2022-4-26","0","0","7.82","0.00","0.00","0.00","0.00","0.00"\n
"2022-4-27","0","0","0","0.00","0.00","0.00","0.00","0.00"\n
"2022-4-28","0","0","0","0.00","0.00","0.00","0.00","0.00"\n
"2022-4-29","3","3","0","0.00","9.00","63.73","54.73","0.00"\n
"2022-4-30","0","0","0","0.00","0.00","0.00","0.00","0.00"\n
"2022-5-1","0","0","0","0.00","0.00","0.00","0.00","0.00"\n
"2022-5-2","0","0","7.82","0.00","0.00","0.00","0.00","0.00"\n
END;
$link = ' <a href="' . htmlspecialchars($content, ENT_QUOTES) . '">' . __('Download CSV', 'custom-code') . '</a>';
The problem is that although I'm using \n at the end of each line, the produced file is still identified as having CRLF style of new lines.
Here you can find two files, where report-7day-2022-05-02.csv is created by JS and is identified correctly as LF, and aaaaaa.csv is my file - created by the code above - and is somehow mistakenly identified as CRLF.
What am I doing wrong?