首页 > 解决方案 > 如何删除超大字符串php中的最后一个字符

问题描述

这里发生了一些奇怪的事情,例如,我有一个 var_dump 的字符串 printend:

 string(83) "papillon"

该字符串的长度过大,为 83,实数为 8。无论如何,有些字符串的!最终位置为:papillon! 如果它们只有 1 个或更多,那么!我必须删除最后一个。

 if(substr_count($tit, '!') >= 1){
            $tit = str_replace('!','',$tit);
          }

这是不正确的,我也不能substr()因为大小而使用。那么如何删除字符串中最后一次出现的特定字符呢?

标签: phpstring

解决方案


所以,有几个选择;

选项 A : rtrim
所以,如果你有;

$my_string = "This is a really long string!!!";
print rtrim($my_string, "!");
// Printed; This is a really long string

这将删除所有出现的所选字符掩码

选项 B:带有 preg_replace 的正则表达式
所以,我们再次得到以下字符串并且可以工作;

$my_string = "This is a really long string!!!";
print preg_replace("/(.+)(!){1}/i", "$0", $my_string);
// Printed; This is a really long string!!

使用 preg_replace 只会删除最后出现的“!” 在字符串中,剩下 2 个

这在很大程度上取决于您的需要,当然还有其他选项,例如 substr,如下所示;

$my_string = "This is a really long string!!!";
print substr($my_string, 0, -1);
// Printed; This is a really long string!!

所以它的工作方式与 preg_replace 相同,但您也可以计算感叹号的数量并根据需要删除

因此,我离开并意识到我使用的是 JavaScript 正则表达式而不是 PHP,这会导致问题......(哎呀!)
为此,我在 PHP 测试平台上乱搞时想出了以下内容,如我的工作所示

$my_string = "This is a really long string!!!";
print preg_replace("/(.[!]{1})[!]{0,}/i", "$1", $my_string);

这将删除每个“!” 除了一个,如果您想全部消失,请更改为;

$my_string = "This is a really long string!!!";
print preg_replace("/(.)[!]{0,}/i", "$1", $my_string);

增加多少个“!”并不重要 有(我用 103 测试过),要么全部,要么除一个之外的所有都将被删除


推荐阅读