0

我需要从字符串中修剪任何尾随的 \n 。

我使用了 rtrim 但由于某种原因它不起作用。无论有没有 rtrim,字符串都保持不变。这让我疯狂。

这是代码:

$strippedDescription = rtrim($strippedDescription);

哪里 $strippedDescription是:

Hill House 的所有者是 HTC 设计高级副总裁 Scott Croyle。在两间卧室、2 1/2 浴室和一间书房中,这个家足够大,可以与他的妻子和儿子分享。其适度的规模使伯恩斯坦能够强调质量材料而不是空间数量。“在那个(科技)社区中,这几乎是一个负值,”伯恩斯坦在谈到顶级住宅时说。“真正强调不要立即寻找豪宅。”\n\n


编辑

好的,问题是 $strippedDescription 正在从 RSS 提要中读取并存储在我们的数据库中。就是文章内容。此内容稍后将通过应用程序显示在 iPhone 上。

iphone程序员说我们需要把“<br/>”和“</p>”换成“\n”,这样iphone才能正确识别新行。然而,这并没有发生。\n 显示为文章的一部分。

这是上述部分之前的代码(其中 $itemDescription 是带有所有 html 标记的文章内容):

    $strippedDescription = $itemDescription;    
    $strippedDescription = str_replace('</p>', '\n', $itemDescription);
    $strippedDescription = str_replace('<br/>', '\n', $itemDescription);
    $strippedDescription = str_replace('<br />', '\n', $itemDescription);           

    $strippedDescription = strip_tags($strippedDescription);
    $strippedDescription = rtrim($strippedDescription);

编辑

好的,我将 '\n' 替换为 "\n" (双引号),这似乎解决了问题。

感谢 Alex 和 Sergi 以及其他人为我指明了正确的方向。

4

2 回答 2

2

看起来你\n最后有文字字符。trim()不会删除这些,因为它们不是空格。

看起来像这样的东西会起作用......

$str = preg_replace('/(\\\n)+\z/', '', $str); 

键盘

于 2013-09-13T14:41:06.830 回答
0

我们这里有几个问题。

\n 不是单个字符,因为 rtrim 不起作用。

但是,您必须搜索 STRING 而不是单个字符。这就是为什么在搜索 \n 时应该使用双引号。

第二个问题是,正如您在问题中看到的那样,末尾有两个 \n ,并且可能还有更多。

我要做的是手动编写一个执行以下操作的函数:

  1. 反转字符串
  2. 在 2 个第一个字符 == "n\" 时循环。
  3. 将这两个字符替换为空白。
  4. 结束循环
于 2013-09-13T14:57:36.440 回答