这里有些奇怪的事情发生,例如,我有一个由var_dump生成的字符串printend:
string(83) "papillon"
此字符串的长度过大,为83,实数为8。
无论如何,有些字符串的最终位置是!
:papillon!
如果他们只有1个或多个,那么!
中的1个必须删除最后一个。
if(substr_count($tit, '!') >= 1){
$tit = str_replace('!','',$tit);
}
这是不正确的,因为大小,我也无法使用substr()
。那么,如何删除字符串中特定字符的最后一次出现?
答案 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测试过),要么全部删除,要么除一个之外的全部删除