Php 当第二个参数包含运算符符号时,为什么ltrim会删除一个字符?
如果我这样做:Php 当第二个参数包含运算符符号时,为什么ltrim会删除一个字符?,php,string,trim,Php,String,Trim,如果我这样做: ltrim('53-34567', '53-'); ltrim('53+34567', '53+'); ltrim('53*34567', '53*'); 我得到的结果是4567,而不是34567。这种行为的解释是什么?ltrim()的第二个参数如下所示 字符掩码 还可以通过character_mask参数指定要去除的字符。只需列出所有要删除的字符 它用于指定要修剪的字符,包括3。如果知道要提取什么,可以使用其他字符串函数 至于为什么不删除另一个5,请参阅此注释: 在'53-3
ltrim('53-34567', '53-');
ltrim('53+34567', '53+');
ltrim('53*34567', '53*');
我得到的结果是
4567
,而不是34567
。这种行为的解释是什么?ltrim()的第二个参数如下所示
字符掩码还可以通过character_mask参数指定要去除的字符。只需列出所有要删除的字符 它用于指定要修剪的字符,包括
3
。如果知道要提取什么,可以使用其他字符串函数
至于为什么不删除另一个5
,请参阅此注释:
在'53-34567'
的开头有一个5
,因此它被删除
在'3-34567'
的开头有一个3
,因此将其删除
在'-34567'
的开头有一个-
,因此将其删除
在'34567'
的开头有一个3
,因此它被删除
在'4567'
开头的'53-'
中没有任何内容,因此它停止了
这与删除不需要的尾随字符的
trim()
的行为相同。例如,trim(“大量空格”)
将通过删除尾随和前导空格返回“很多空格”
,但将保留内部空格。这是因为ltrim
从第二个参数修剪字符
工作原理:
函数的作用是:从字符串的左侧删除空格或其他预定义字符。可能重复的,或者第二个参数是一组字符,而不是一个字符序列。我想我不明白:)在这种情况下,
5
为什么不进行修剪?最终结果包含5
。另外,如果我使用53
作为第二个参数(没有任何运算符符号),我会得到+34567
结果。@sica07:tryltrim('52*34567','52*')代码>您将得到更精确的答案,trim()排除第二个参数中列出的字符(与它们出现的频率无关),而不是参数字符串。在OT的例子中,这三行可以简化为ltrim($str,“+3-5*”)
(或字符的任何其他排列),并且工作方式相同。非常清楚!非常感谢。这是一个非常清楚和很好的解释正在发生的事情。远比抛出字符掩码
定义有用。如果我有什么建议,请在您的答案中的某个地方添加“继续删除53-34567
左侧的5
或3
或-
”。
ltrim('53-34567', '53-');