2013-09-21 183 views
0

我寫了一小段php,它從xml提要中獲取項目(本例中爲產品)。我使用simplexml_load_file將Feed的各個部分分配給變量。替換 n r換行php

它工作得很好,我輸出結果到一個CSV文件。我遇到的問題是xml中的一些項目是html描述,並且在它們中有換行符。這是打破了csv,因爲它將這些視爲新行。

爲了解決這個問題,我在csv的每一行都添加了一行字符串的結尾,我試圖從描述中刪除所有\ n \ r,然後用\ n替換這個\ n使csv工作。

我可以使用記事本++手動執行它,但是當用PHP嘗試它時似乎不起作用。

下面是我試過的代碼,但我可能已經搞砸了,因爲我從來沒有做過這件事,它似乎並沒有工作。生成的csv仍然具有原始的換行符,並且eol字符串仍然存在。

​​

只是想知道如果他們的任何東西顯而易見,我錯過了,或者我可能會錯過它。 任何幫助將不勝感激。 奈傑爾

回答

1

您正在更換 「斜線n」 和 「斜線R」 來代替LF和CR字符的位置:

$new_Line = array('\n\r', '\n', '\r'); 

使用雙引號:

$new_Line = array("\n\r", "\n", "\r"); 

您可以自己看到區別:

<?php 
print '\n'; 

將打印:\ n

雖然

<?php 
print "\n"; 

將打印一個換行符

確定,它應該是 「\ n \ r」,而不是 「\ r \ n」?

+0

我會試試看。 – Go2Pub

+0

就是這樣,非常感謝,它證明了我一直以來的想法,我是一個白癡大聲笑 – Go2Pub

+0

@ Go2Pub你根本不需要$ new_Line數組中的「\ n \ r」 - 這些符號無論如何分開替換 – user4035

0

這是從PHP文檔站點的例子:

http://php.net/manual/en/function.str-replace.php

$str  = "Line 1\nLine 2\rLine 3\r\nLine 4\n"; 
$order = array("\r\n", "\n", "\r"); 
$replace = ''; 

$newstr = str_replace($order, $replace, $str); 

正如你所看到的,你應該用身邊的每個陣列項目,你應該更換\r\n沒有雙引號像你一直在做的\n\r

+0

非常感謝,單引號是問題所在。 – Go2Pub