【问题标题】:remove a part at the end of string - last match only [duplicate]删除字符串末尾的一部分-仅最后一个匹配项[重复]
【发布时间】:2017-10-20 21:39:33
【问题描述】:

我正在使用rtrim() 删除字符串末尾的一部分,在我的示例中为, US

<?php

$str = "Hello - world, c., US, US";

echo rtrim($str,", US");

?>

输出:

Hello - world, c.

它删除了, US, US,我只想删除最后一个,输出应该是Hello - world, c., US

请问我该怎么做?

【问题讨论】:

  • 为什么不直接删除最后 4 个字符?

标签: php string trim


【解决方案1】:

rtrim() 不会删除特定的字符串,它使用该字符串作为最后要删除的字符列表。

使用正则表达式替换:

echo preg_replace('/, US$/', '', $str);

$ 将匹配锚定到字符串的末尾。

【讨论】:

    【解决方案2】:

    substr + strrpos 方法:

    $str = "Hello - world, c., US, US";
    echo substr($str, 0, strrpos($str, ", US"));
    

    输出:

    Hello - world, c., US
    

    【讨论】:

    • 这是一个更好的答案,因为另一个的 CPU 密集度更高,这在大范围内会很明显。
    • 如果找不到 ", US" 则会给出空字符串
    猜你喜欢
    • 1970-01-01
    • 2014-07-24
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    相关资源
    最近更新 更多