当第二个参数包含操作符时,为什么ltrim会删除一个字符?

时间:2018-05-04 11:46:37

标签: php string trim

如果我这样做:

ltrim('53-34567', '53-');
ltrim('53+34567', '53+');
ltrim('53*34567', '53*');

我得到4567作为结果,而不是34567。这种行为有什么解释?

3 个答案:

答案 0 :(得分:21)

ltrim('53-34567', '53-');

5开头有一个'53-34567',因此会被移除。

3开头有一个'3-34567',因此会被移除。

-开头有一个'-34567',因此会被移除。

3开头有一个'34567',因此会被移除。

'53-'开始时'4567'内没有任何内容,所以它停止了。

通过删除不需要的尾随字符,这与trim()的行为相同。例如,trim(" lots of spaces ");将通过删除尾随前导空格返回"lots of spaces",但会保留内部空格。

答案 1 :(得分:17)

@classmethod def modify_cv(cls, new_value): do_stuff_with(cls) Base.cv = new_value 的第二个参数如下

  

<强> character_mask
  您还可以通过character_mask参数指定要剥离的字符。只需列出要删除的所有字符。

它用于指定要修剪的字符,其中包括ltrim()。如果您知道要提取的内容,则可以使用其他字符串函数。

至于为什么其他3未被移除,请参阅此评论:http://php.net/manual/en/function.ltrim.php#118221

答案 2 :(得分:5)

这是因为ltrim修剪了第二个参数中的字符。

工作原理:

  1. 从左开始读取字符串(第一个参数)。
  2. 检查第一个左侧的字符是否在&#39;字符到剪裁的列表中?列表。
  3. 如果2为是 - 修剪它并转到步骤1.
  4. 如果2为NO - 退出。