输出字符串到csv文件行空间问题

时间:2013-06-26 14:04:46

标签: php csv str-replace put

我正在使用以下内容将页面的剥离内容保存到我服务器上的csv文件中。

$strippedpage = str_replace('<br>',' ', $semistrippedpage);
    file_put_contents('yourpage.csv', $strippedpage);
在代码之前

我基本上只使用str_replace来删除所有的html并将其格式化为csv文件。

    1-Do you like Science?,
    5,2
    1,6
    3,7
    6,8
    7,9
    85,Love
    6,Ok
    15,Strongly Dislike
    2- Do you enjoy science lessons at school?,
    1,3
    1,4
    5,7
    4,8
    2,9
    78,Love
    21,Ok
    16,Strongly Dislike
    3-How often do you use ICT in Science Lessons? (E.g. microscopes digital cameras easi-speak mics.),
    29,2
    8,3
    11,4
    20,6
    4,7
    27,In Some Lessons
    29,Not At All

字符串中剩下的唯一html是用于分隔行的BR标记。

如果我将上面的输出从浏览器复制并粘贴到记事本文档并将其另存为csv,则会打开并将每行显示为单独的一行。

我遇到的问题是,如果我在服务器上打开生成的'yourpage.csv'文件,我会得到以下内容:

1-Do you like Science?, 5,2 1,6 3,7 6,8 7,9 85,Love 6,Ok 15,Strongly Dislike 2- Do you enjoy science lessons at school?, 1,3 1,4 5,7 4,8 2,9 78,Love 21,Ok 16,Strongly Dislike 3-How often do you use ICT in Science Lessons? (E.g. microscopes  digital cameras  easi-speak mics.), 29,2 8,3 11,4 20,6 4,7 27,In Some Lessons 29,Not At All 4-How often do you get to do practical Science in lessons?, 1,No Answer 17,2 8,3 14,4 4,6 8,7 5,8 1,9 11,In Every Lesson 56,In Some Lessons 3,

出于某种原因,它只是在一行中将它全部打包,我不知道如何在代码中添加换行符的csv,以便每个结果都在一个单独的行上,就像我上面发布的示例一样。

3 个答案:

答案 0 :(得分:2)

$strippedpage = str_replace('<br>',"\n", $semistrippedpage); //for new line
file_put_contents('yourpage.csv', $strippedpage);

答案 1 :(得分:1)

而不是剥离br,你可能想用新的行标签替换它们

即&GT; $nl = preg_replace('#<br\s*/?>#i', "\n", $html);

可能会让你朝着正确的方向前进吗?

答案 2 :(得分:1)

在PHP中,换行符通常为\n,而大多数Windows程序(如记事本)中使用\r\n

因此,Windows记事本无法识别换行符。

尝试使用其他编辑器(例如Notepad++)打开CSV文件,看看是否得到相同的结果。

此外,我建议您使用fputcsv生成CSV文件而不是简单的str_replace,因为它更安全(例如,它可以处理特殊字符)。