无法在PHP行尾爆炸字符串

时间:2013-02-01 11:08:31

标签: php string rss

我正在编写一个PHP应用程序,用于从RSS源中获取数据,并将其存储为不同的移动应用程序格式。

除了从字符串中获取数据的重要位之外,一切正常。数据中有明显的新行,但我无法爆炸!这是我尝试将每一行存储到数组中的尝试。我已经用尽了我的知识和谷歌的结果!!

    // 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);

感谢大家的投入,我们最终到达了那里!

4 个答案:

答案 0 :(得分:1)

我只想使用preg_split()来匹配\n\r字符的任意组合,而不是使用str_replace()来处理字符串,这样我们就可以{{1}它。

您的整个代码缩减为一行:

explode()

这与原始解决方案的唯一区别在于,如果输入包含空行,则它们不会出现在爆炸输出中。但我认为在你的情况下这可能是一件好事。

答案 1 :(得分: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);

答案 2 :(得分: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);

感谢大家的投入,我们最终到达了那里!

答案 3 :(得分:0)

我通常使用的是:

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

这一直对我有用,我希望它可以帮助你