2013-06-26 93 views
0

我正在使用以下命令將頁面的剝離內容保存到服務器上的csv文件中。將字符串輸出到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等價物,以便每個結果都在單獨的行上,就像我上面發佈的示例一樣。

+0

在Windows和unix系統上,行尾不一樣:http://www.cs.toronto.edu/~krueger/csc209h/tut/line-endings.html。記事本需要Windows行結束符,而其他編輯器(notepad ++,ultraedit,...)能夠「理解」Unix行結束符。我會建議使用其中之一。 –

回答

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

非常感謝!,完美的作品! :-) –

1

,而不是剝離了BR的,你可能想用新的生產線的標籤

來替換它們

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

可能讓你在正確的方向前進嗎?

1

在PHP中,換行符通常是\n,而\r\n用於大多數Windows程序(如記事本)。

因此,Windows記事本不能識別換行符。

嘗試用另一個編輯器(例如Notepad++)打開您的CSV文件,看看是否得到相同的結果。

此外,我建議您使用fputcsv生成CSV文件,而不是簡單的str_replace,因爲它更安全(例如,它可以處理特殊字符)。