Search code examples
phpstringtrim

Why does ltrim remove one character when the second argument contains an operator sign?


If I do:

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

I get 4567 as the result and not 34567. What's the explanation for this behavior?


Solution

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

    There is a 5 at the begining of '53-34567' so it is removed.

    There is a 3 at the begining of '3-34567' so it is removed.

    There is a - at the begining of '-34567' so it is removed.

    There is a 3 at the begining of '34567' so it is removed.

    There is nothing in '53-' at the begining of '4567' so it stopped.

    This is the same behaviour than a trim() by removing unwanted trailing characters. In example, trim(" lots of spaces "); will return "lots of spaces" by removing trailing and leading spaces but will keep the inner ones.