【问题标题】:PHP rtrim to Remove the Last Space and What FollowsPHP rtrim 删除最后一个空格和接下来的内容
【发布时间】:2020-11-09 09:05:47
【问题描述】:

在 PHP 中如何使用 trim() 或 rtrim() 删除最后一个空格和后面的字符?

例子:

任何地址 23B

成为

任何地址

另一个地址 6

成为

另一个地址

【问题讨论】:

  • 由于结尾是动态的,修剪是不可能的。正则表达式(preg_replace)将是这样做的正确方法。

标签: php trim character-trimming


【解决方案1】:

你不能。 Trim 用于空格和制表符等,或指定的字符。你想要的是更具体的逻辑。

如果你想从最后一个空格开始:

$lastSpace = strrpos($string, ' ');
$street = substr($string, 0, $lastSpace);
$number = substr($string, $lastSpace+1);

您也可以在空间上使用implode,使用array_pop 获取最后一个值,然后使用implode,但是与substr 相比,字符串操作上的数组函数成本更高。
您也可以使用正则表达式来获取最后一个值,但虽然它比字符串的数组操作更好,但您应该将其用作 B 计划,因为正则表达式也不是最轻量级的选项。

【讨论】:

    【解决方案2】:

    为什么不使用正则表达式?

    $address = 'Any Address 23B';
    $matches = [];
    preg_match('/(?P<street>.*) \w+$/', $address, $matches);
    
    print_r($matches['street']); // OUTPUT: "Any Address"
    

    【讨论】:

      【解决方案3】:

      如果您不想使用上面的答案,这里有一个没有正则表达式的解决方案:

      
      $string = 'Any Address 23B';
      $stringRev = explode(' ', strrev($string), 2);
      echo strrev($stringRev[1]);  //result: Any Address
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-28
        • 1970-01-01
        • 2015-09-04
        • 2017-03-01
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 2020-07-06
        相关资源
        最近更新 更多