PHP rtrim未删除尾部\n

PHP rtrim未删除尾部\n,php,string,Php,String,我需要从字符串中修剪任何尾随\n 我使用了rtrim,但由于某种原因它不起作用。带或不带rtrim的字符串保持不变。这快把我逼疯了 代码如下: $strippedDescription = rtrim($strippedDescription); 其中,$strippedDescription是: Hill House的所有者是HTC设计高级副总裁Scott Croyle。家里有两间卧室,两个半浴室和一间书房,足够和他的妻子和儿子共用。其适度的规模使伯恩斯坦能够强调高质量的材料而不是空间的数量

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

我使用了rtrim,但由于某种原因它不起作用。带或不带rtrim的字符串保持不变。这快把我逼疯了

代码如下:

$strippedDescription = rtrim($strippedDescription);
其中,
$strippedDescription
是:

Hill House的所有者是HTC设计高级副总裁Scott Croyle。家里有两间卧室,两个半浴室和一间书房,足够和他的妻子和儿子共用。其适度的规模使伯恩斯坦能够强调高质量的材料而不是空间的数量。 “在那个(科技)社区,这几乎是一个负值,”over-top homes的伯恩斯坦说。“我们真正强调的是不要马上去寻找豪宅。”\n\n


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

iphone程序员说我们需要将“
”和“

”替换为“\n”,这样iphone才能正确识别新的线路。然而,这并没有发生。将\n作为文章的一部分显示

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

$strippedDescription=$itemDescription;
$strippedDescription=str_replace(“

”、“\n”、$itemDescription); $strippedDescription=str_replace('
','\n',$itemDescription); $strippedDescription=str_replace('
','\n',$itemDescription); $strippedDescription=带标签($strippedDescription); $strippedDescription=rtrim($strippedDescription);

编辑 好的,我用“\n”(双引号)替换了“\n”,这似乎解决了问题


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

看起来你的末尾有文字字符
\n
trim()
不会删除这些,因为它们不是空白

看起来像这样的东西会有用

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

.

我们这里有几个问题

由于rtrim不工作,\n不是单个字符

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

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

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

  • 把绳子倒过来
  • 循环,而前两个字符==“n\”
  • 将这两个字符替换为空白
  • 端环

  • +1最有可能的不是新行字符,而是两个独立的字符:反斜杠和字母nYes。请查看编辑以获取详细解释。谢谢alex。在我的代码中,这是修剪这些f的唯一方法。。字符串末尾的换行符为什么要反转字符串?最好的建议是向后迭代它吗?因为“\n”是两个字符,所以在反转字符串后,您应该检查“n”。另外,@alex说得很好,不需要反转stringWell,我总是觉得从0到结尾循环更舒服。“显然没有必要逆转它。”尼克很高兴你解决了它。但是,如果有任何答案是正确的,请将其作为答案接受,如果没有100%正确的答案,请将您自己的答案作为答案发布并接受,这样一来,任何前来的用户都可以看到案例的解决方案,而无需大量阅读。
    $str = preg_replace('/(\\\n)+\z/', '', $str);