【问题标题】:remove trailing backslash from string从字符串中删除尾部反斜杠
【发布时间】:2016-10-17 17:47:24
【问题描述】:

我想在不使用stripslashes() 或str_replace() 的情况下从字符串中删除尾部反斜杠。理想情况下,我可以使用rtrim(),但它与反斜杠有关,这让 PHP 吓坏了。

$string = "This is my string\";

//iv'e tried with no success
$clean_string = rtrim($string, "\\");
$clean_string = rtrim($string, "\\\\");

理想情况下,字符串应该只是“这是我的字符串”,末尾没有反斜杠。我不完全确定如何正确逃避它,非常感谢任何帮助。

【问题讨论】:

  • 您的意思可能是$string = "This is my string\\";。要在双引号或单引号 PHP 字符串文字中定义 \,您需要将其加倍。
  • 感谢您的回复。该字符串不是像上面的示例那样通过硬编码创建的。它接收一个 CSV,然后拆分适当的行/列。这里的字符串表示 CSV 的任何“单元格”中的值
  • 您的两种方法都可以正常工作。问题是$string.Check it中的反斜杠

标签: php string character-trimming


【解决方案1】:

试试这个:

 if(substr($string, -1) == "\"){ 
   echo substr($string, 0, -1);
 }

if 条件检查最后一个字符是否有斜线。

【讨论】:

  • 感谢您的快速回复...问题是,这是一个导入脚本,并不是每个字符串都有尾部反斜杠...我不希望每次都删除最后一个章程。
  • @NikoJohnson 更新了答案
  • 感谢您的修复。它似乎也没有以正确的方式逃脱...即使我使用
  • @NikoJohnson 你得到的是单个反斜杠还是多个反斜杠或不知道它。
  • 糟糕,不小心按得太快了。无论如何,我真的很感谢你的帮助,但是反斜杠没有正确转义......这就是我感到困惑的地方,我不知道如何让 php 识别反斜杠.. :(
【解决方案2】:

你可以试试preg_replace:

$string = 'This is my string\\';
$clean_string = preg_replace('/(.+)(\\\\)$/', '${1}', $string);

如果模式匹配,尾部的斜杠将被删除。否则你会得到相同的字符串。

【讨论】:

    【解决方案3】:

    这对我有用:

        if(substr($string, -1) == '\\')
        { 
            $string = substr($string, 0, -1);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-19
      • 2015-03-28
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      相关资源
      最近更新 更多