如何删除超大字符串PHP中的最后一个字符

时间:2018-07-04 09:30:29

标签: php string

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

 string(83) "papillon"

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

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

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

1 个答案:

答案 0 :(得分:1)

因此,有两种选择;

选项A:rtrim
所以,如果有的话

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

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

选项B:regex with 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测试平台as shown in my working out

上弄乱时,我想到了以下内容
$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测试过),要么全部删除,要么除一个之外的全部删除