php - 如何删除超大字符串php中的最后一个字符
问题描述
这里发生了一些奇怪的事情,例如,我有一个 var_dump 的字符串 printend:
string(83) "papillon"
该字符串的长度过大,为 83,实数为 8。无论如何,有些字符串的!
最终位置为:papillon!
如果它们只有 1 个或更多,那么!
我必须删除最后一个。
if(substr_count($tit, '!') >= 1){
$tit = str_replace('!','',$tit);
}
这是不正确的,我也不能substr()
因为大小而使用。那么如何删除字符串中最后一次出现的特定字符呢?
解决方案
所以,有几个选择;
选项 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 测试过),要么全部,要么除一个之外的所有都将被删除
推荐阅读
- matlab - 按传感器 ID 在 MATLAB 中拆分表
- python - 打印语句不允许我输入内容
- sql - 将 Condition 写为 where 子句的值
- html - 如何在悬停时更改垂直居中的 SVG 外观?
- mysql - 错误:无法执行 INSERT INTO 帖子(用户名、图片、新闻、subreddit、标题)值
- javascript - 在远程服务器上抓取推文的速度取决于什么?
- typescript - 如果 TypeScript 编译失败,如何停止构建 ParcelJS 构建?
- ruby - 使用 Ruby 解析“ps aux”Linux 终端输出
- python - 在生成器表达式python中更改索引值
- python - 在 Jupyter Notebook 中获取 Google Colab 自动完成功能