2013-02-01 27 views
1

我正在編寫一個PHP應用程序,以便從RSS提要中提取數據並將其存儲爲可供移動應用程序使用的不同格式。無法在行尾展開字符串PHP

除了從字符串中獲取數據的重要位之外,一切正常。數據中有明顯的新行,但我無法爆炸!這是我嘗試將每行存儲到數組中的嘗試。我已經用盡了我的知識和Google的結果!

// Prepare the data 
    $possibleLineEnds = array("\r\n", "\n\r", "\r"); 
    $preparedData = trim($row['description']); 

    // Loop through and replace the data 
    foreach ($possibleLineEnds as $lineEnd) { 

     $preparedData = str_replace($lineEnd, "\n", $preparedData); 
    } 

    // Explode the data into new rows 
    $locationData = explode("\n", $preparedData); 

    print_r($locationData); 

任何想法,任何事情都會受到歡迎!


,因爲我沒有評級的10

我找到了工作,我不能標記這個作爲回答!我知道它不夠完美,我明白不瞭解preg功能的模式!

下面是工作代碼:

// Prepare the data 
    $possibleLineEnds = array("\r\n", "\n\r", "\r", "<br>", "<br/>", "&lt;br/&gt;"); 
    $preparedData = trim(htmlspecialchars_decode($row['description'])); 

    // Replace the possible line ends 
    $preparedData = str_replace($possibleLineEnds, "\n", $preparedData); 

    // Explode the data into new rows 
    $locationData = explode("\n", $preparedData); 

    print_r($locationData); 

感謝大家的投入,我們到底到了那裏!

+0

我認爲你應該添加一些內容..因爲它就像乾草堆裏的針。 –

+3

除了冗餘的foreach循環:str_replace()可以接受數組參數 –

+0

對不起,但我仍然不明白。你在處理RSS鏈接嗎?有些情況下explode()更有效(成本效益明智),但解析RSS不是其中之一。 – rlatief

回答

0

我通常用的是:

$preparedData = str_replace("\r", "", $preparedData); 
$locationData = explode("\n", $preparedData); 

,這爲我工作的時候,我希望它可以幫助你

+1

此解決方案無法識別舊的Macintosh行末尾'\ r' –

1

我只想用preg_split()\n\r字符的任意組合搭配,而不是用str_replace()搞亂字符串,只是讓我們可以explode()而已。

整個代碼被減少爲單個行:

$output = preg_split('/(\n|\r)+/', $input); 

這和你原來的解決方案之間的唯一區別是,如果輸入中包含空行,他們將不會出現在爆炸輸出。但我認爲這對你來說可能是件好事。

1

如果你不能按新行分割。按唯一字符串拆分;

// Prepare the data 
$possibleLineEnds = array("\r\n", "\n\r", "\r", "\n"); 
$preparedData = trim($row['description']); 

// Loop through and replace the data 
foreach ($possibleLineEnds as $lineEnd) { 

    $preparedData = str_replace($lineEnd, ":::", $preparedData); 
} 

// Explode the data into new rows 
$locationData = explode(":::", $preparedData); 

print_r($locationData); 
1

我得到它的工作!我知道它不夠完美,我明白不瞭解preg功能的模式!

下面是工作代碼:

// Prepare the data 
$possibleLineEnds = array("\r\n", "\n\r", "\r", "<br>", "<br/>", "&lt;br/&gt;"); 
$preparedData = trim(htmlspecialchars_decode($row['description'])); 

// Replace the possible line ends 
$preparedData = str_replace($possibleLineEnds, "\n", $preparedData); 

// Explode the data into new rows 
$locationData = explode("\n", $preparedData); 

print_r($locationData); 

感謝大家的投入,我們到底到了那裏!