这 PHP 代码 我哪里错了?

2019 年 5 月 5 日
 wufeng

$str=ltrim("852546","852"); echo $str;

我设想是 去除前面的 852 但结果是去除了 8525

2872 次点击
所在节点    问与答
15 条回复
Sanko
2019 年 5 月 5 日
maichael
2019 年 5 月 5 日
第二个参数是一个“字符集”,不是一个“字符串”。
Telegram
2019 年 5 月 5 日
同好奇
leadfast
2019 年 5 月 5 日
同好奇+1
donething
2019 年 5 月 5 日
不懂
haiyang416
2019 年 5 月 5 日
去掉固定字符串可以用 str_replace。
haiyang416
2019 年 5 月 5 日
trim 函数的第二个参数可以理解为正则里面的 [852]。
nazor
2019 年 5 月 5 日
去掉前面的所有的 8,5,2 所以会去掉两个 5
leadfast
2019 年 5 月 5 日
NjcyNzMzNDQ3
2019 年 5 月 5 日
有趣的问题,代替方案例如 substr/preg_repalce/str_replace 皆可。


原因是如二楼所说,ltrim 的第二个参数去掉的二楼说的字符集(即 ASCII )码。
例子来自 php 文档:
// trim the ASCII control characters at the beginning of $binary
// (from 0 to 31 inclusive)
$clean = ltrim($binary, "\x00..\x1F");


str_replace 的第二个参数类型是:@param mixed $replace
ltrim 的第二个参数类型是:@param string $character_mask
tongz
2019 年 5 月 5 日
>>> trim('852546245258', '852');
=> "4624"
wufeng
2019 年 5 月 5 日
理解了 我以为是字符串
现在用 str_replace 代替了
juneszh
2019 年 5 月 5 日
看看 document 就能找到答案。。。
NjcyNzMzNDQ3
2019 年 5 月 5 日
@wufeng 用 preg_replace 吧,你用的 ltrim 说明你要替换开头的字符,str_replace 所有位置都会被替换的。
supuwoerc
2019 年 5 月 5 日
试试 str_replace

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/561046

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX