【问题标题】:PHP rtrim function trim extra character? Why?PHP rtrim 函数修剪多余的字符?为什么?
【发布时间】:2019-06-04 10:46:56
【问题描述】:

rtrim 是如何工作的?我有一个字符串“4dbb3dca&”。我不确定我的字符串是如何形成的。 我想打电话给rtrim('4dbb3dca&', '&')

--edit:& 可能是$amp; 特殊字符问题

但在我的字符串之后是4dbb3dc

我希望它是4dbb3dca

有什么解决方法吗?我尝试使用&,但随后 rtrim 什么也不做,并返回初始字符串。在我的情况下可以使用rtrim 吗?是否依赖于php版本?

--- 编辑---

经过一些研究,我意识到我想要: 我想在rtrim() 函数中使用& 删除&。这可能吗?

【问题讨论】:

  • 只要& 工作正常。你到底尝试了什么?
  • 您已经阅读手册了吗? php.net/manual/en/function.rtrim.php
  • rtrim 的第二个参数是字符掩码。您是否需要专门删除 & 或仅删除其中任何一个字符?
  • 我想在rtrim() 中使用& 删除&

标签: php character-trimming


【解决方案1】:

第一季度。在我的情况下可以使用 rtrim 吗? 是的,在您的情况下可以使用rtrim()

第二季度。它取决于php版本吗? 没有

您只需要使用echo rtrim('4dbb3dca&', '&'); 而不是&,因为rtrim 的第二个参数如下所示-

您还可以通过以下方式指定要删除的字符 character_mask 参数。只需列出您的所有字符 想被剥夺

演示: https://3v4l.org/anFIR

如果您使用下面的示例,那么您将得到相同的结果,因为它会尝试从给定字符串的右侧删除所有给定字符。对于前-

echo rtrim('4dbb3dca&;pm', '&');` // will also return 4dbb3dc

【讨论】:

    【解决方案2】:

    您在rtim() 中指定的第二个字符串包含您要修剪的所有额外字符。所以被修剪的字符是"&""a"(两者都确实包含在rtrim() 函数调用的第二个参数"&amp" 中)。

    要得到你想要的结果,你应该这样调用rtrim()

    rtrim('4dbb3dca&', '&')
    

    【讨论】:

      【解决方案3】:

      您似乎正在尝试从字符串末尾删除一个&符号,可能是编码形式。正如您所见,rtrim 没有给您足够的控制权来做到这一点,但您可以使用 preg_replace 来做到这一点。

      echo preg_replace('/&(amp;)?$/', '', $string);
      

      该模式将匹配字符串末尾的 & 符号,可选地后跟 amp;。

      【讨论】:

        【解决方案4】:

        rtrim 的工作方式会删除第二个参数的最后一个字符。

        PHP 已将字符串拆分为字符,并检查字符串最后是否包含字符。

        如果字符列表中有两个字符,rtrim 将删除这两个字符

        例如:

        ;&apm& 的结果相同

        如果要删除字符串末尾的唯一 & 符号 使用此代码:rtrim('4dbb3dca&','&');

        要了解更多信息,您可以在 php.net 上阅读 http://php.net/manual/en/function.rtrim.php

        【讨论】:

          猜你喜欢
          • 2021-10-17
          • 1970-01-01
          • 2020-10-29
          • 1970-01-01
          • 2018-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多