如何删除超大字符串php中的最后一个字符
这里发生了一些奇怪的事情,例如,我有一个字符串printend by var_dump:如何删除超大字符串php中的最后一个字符,php,string,Php,String,这里发生了一些奇怪的事情,例如,我有一个字符串printend by var_dump: string(83) "papillon" 这根绳子的长度过大,是83,实际长度是8。 无论如何,有些字符串有一个在最终位置:papillon 如果他们只有一个或多个我必须删除最后一个 if(substr_count($tit, '!') >= 1){ $tit = str_replace('!','',$tit); } 这是不正确的,而且由于尺寸太
string(83) "papillon"
这根绳子的长度过大,是83,实际长度是8。
无论如何,有些字符串有一个代码>在最终位置:papillon代码>
如果他们只有一个或多个代码>我必须删除最后一个
if(substr_count($tit, '!') >= 1){
$tit = str_replace('!','',$tit);
}
这是不正确的,而且由于尺寸太大,我不能使用substr()。那么,如何删除字符串中最后出现的特定字符呢 因此,有两种选择
选择A:
所以,如果你有
$my_string = "This is a really long string!!!";
print rtrim($my_string, "!");
// Printed; This is a really long string
这将删除所选字符掩码的所有匹配项
选项B:
所以,我们有下面的字符串和工作
$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("/(.)[!]{0,}/i", "$1", $my_string);
不管还有多少个额外的“!”(我已经用103个测试过),要么全部删除,要么除了一个之外全部删除rtrim($tit,“!”)
从字符串的右侧获取要删除的字符掩码,对于左侧字符也存在ltrim
使用substr
的问题是什么?@NicoHaase字符串的长度不是8而是83,因此最后一个位置不是8!在这种情况下,我建议您首先使用urlencode
对该值进行调试输出……这将允许您查看那些位置中的实际字节值,这些位置只是“不可打印”(甚至可能是无效的)“字符”;它删除了我所有的字符串,为什么?可能是我使用的测试平台,尝试用$1
代替$0
不,同样的错误。rtrim也帮不了我,substr也帮不了我,只有regex可以保存me@Cristian-我目前正在努力改进,请容忍我完美,你救了我!非常感谢。
$my_string = "This is a really long string!!!";
print preg_replace("/(.)[!]{0,}/i", "$1", $my_string);