这 PHP 代码 我哪里错了?

2019-05-05 11:21:01 +08:00
 wufeng

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

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

2291 次点击
所在节点    问与答
15 条回复
Sanko
2019-05-05 11:37:43 +08:00
maichael
2019-05-05 11:51:40 +08:00
第二个参数是一个“字符集”,不是一个“字符串”。
Telegram
2019-05-05 12:15:35 +08:00
同好奇
leadfast
2019-05-05 12:16:18 +08:00
同好奇+1
donething
2019-05-05 12:16:53 +08:00
不懂
haiyang416
2019-05-05 12:16:58 +08:00
去掉固定字符串可以用 str_replace。
haiyang416
2019-05-05 12:18:03 +08:00
trim 函数的第二个参数可以理解为正则里面的 [852]。
nazor
2019-05-05 12:18:46 +08:00
去掉前面的所有的 8,5,2 所以会去掉两个 5
leadfast
2019-05-05 12:22:03 +08:00
NjcyNzMzNDQ3
2019-05-05 14:08:28 +08:00
有趣的问题,代替方案例如 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-05-05 14:16:44 +08:00
>>> trim('852546245258', '852');
=> "4624"
wufeng
2019-05-05 15:04:58 +08:00
理解了 我以为是字符串
现在用 str_replace 代替了
juneszh
2019-05-05 15:08:54 +08:00
看看 document 就能找到答案。。。
NjcyNzMzNDQ3
2019-05-05 15:12:03 +08:00
@wufeng 用 preg_replace 吧,你用的 ltrim 说明你要替换开头的字符,str_replace 所有位置都会被替换的。
supuwoerc
2019-05-05 15:18:58 +08:00
试试 str_replace

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

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

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

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

© 2021 V2EX