1

我正在编写一个 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

4 回答 4

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);
于 2013-02-01T11:27:50.333 回答
1

我只是preg_split()用来匹配\n和字符的任何组合,而不是用我们可以\r的方式弄乱字符串。str_replace()explode()

您的整个代码被简化为一行:

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

这与您的原始解决方案之间的唯一区别是,如果输入包含空行,它们将不会出现在展开的输出中。但我认为这对你来说可能是件好事。

于 2013-02-01T11:18:40.937 回答
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);

谢谢大家的意见,我们终于到了!

于 2013-02-03T09:44:38.063 回答
0

我通常使用的是:

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

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

于 2013-02-01T11:13:37.773 回答