• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ltrim()

    (PHP 4, PHP 5, PHP 7)

    删除字符串开头的空白字符(或其他字符)

    说明

    ltrim(string $str[,string $character_mask] ): string

    删除字符串开头的空白字符(或其他字符)

    参数

    $str

    输入的字符串。

    $character_mask

    通过参数$character_mask,你也可以指定想要删除的字符,简单地列出你想要删除的所有字符即可。使用..,可以指定字符的范围。

    返回值

    该函数返回一个删除了$str最左边的空白字符的字符串。如果不使用第二个参数,ltrim()仅删除以下字符:

    • ""(ASCII32(0x20)),普通空白字符。
    • "t"(ASCII9(0x09)),制表符.
    • "n"(ASCII10(0x0A)),换行符。
    • "r"(ASCII13(0x0D)),回车符。
    • "0"(ASCII0(0x00)),NUL空字节符。
    • "x0B"(ASCII11(0x0B)),垂直制表符。

    范例

    Example #1ltrim()的使用范例

    <?php
    $text = "\t\tThese are a few words :) ...  ";
    $binary = "\x09Example string\x0A";
    $hello  = "Hello World";
    var_dump($text, $binary, $hello);
    print "\n";
    $trimmed = ltrim($text);
    var_dump($trimmed);
    $trimmed = ltrim($text, " \t.");
    var_dump($trimmed);
    $trimmed = ltrim($hello, "Hdle");
    var_dump($trimmed);
    // 删除 $binary 开头的 ASCII 控制字符
    // (从 0 到 31,包括 0 和 31)
    $clean = ltrim($binary, "\x00..\x1F");
    var_dump($clean);
    ?>

    以上例程会输出:

    string(32) "        These are a few words :) ...  "
    string(16) "    Example string
    "
    string(11) "Hello World"
    string(30) "These are a few words :) ...  "
    string(30) "These are a few words :) ...  "
    string(7) "o World"
    string(15) "Example string
    "
    

    参见

    • trim()去除字符串首尾处的空白字符(或者其他字符)
    • rtrim()删除字符串末端的空白字符(或者其他字符)
    When using a $character_mask the trimming stops at the first character that is not on that mask.
    So in the $string = "Hello world" example with $character_mask = "Hdle", ltrim($hello, $character_mask) goes like this:
    1. Check H from "Hello world" => it is in the $character_mask, so remove it
    2. Check e from "ello world" => it is in the $character_mask, so remove it
    3. Check l from "llo world" => it is in the $character_mask, so remove it
    4. Check l from "lo world" => it is in the $character_mask, so remove it
    5. Check o from "o world" => it is NOT in the $character_mask, exit the function
    Remaining string is "o world".
    I hope it helps someone as I had a confusing moment with this function.
    For those who use right-to-left languages such as Arabic, Hebrew, etc., it's worth mentioning that ltrim() (which stands for left trim) & rtrim() (which stands for right trim) DO NOT work contextually. The nomenclature is rather semantically incorrect. So in an RTL script, ltrim() will trim text from the right direction (i.e. beginning of RTL strings), and rtrim() will trim text from the left direction (i.e. end of RTL strings).
    Guys, if += 0 is producing wrong values sometimes, and preg_replace is cpu consuming, then just stick to the main function described on that page, and use:
    <?php
    $value = ltrim($value, '0');
    ?>
    should be the fastest and most reliable.
    I think all those comments can be misleading for begginers checking this page - it's sort of using magic tricks to reinvent the wheel.
    @scion4581
    The problem is that the character mask (_stw in your case) isn't a literal string, but a character collection. So all characters within _stw are stripped. In your case this includes the w of weight also.
    +=0 not valid for something like 0000-5. Result is 0
    To remove leading/trailing zeroes (example: "0123.4560"), doing a += 0 is easier than trim tricks.
    I noticed one thing.
    Suppose you have to ltrim zeroes from strings like "015", "002", etc. and convert them back to numbers, eg. using intval.
    Suppose you must convert to number "000" too.
    In this case:
    $trimmedString = ltrim('000', '0');
    the value of $trimmedString would be NULL (and I think the docs should mention this).
    Anyway, I initially thought I had to conditional check for this '000', but I found that intval(NULL) returns 0 (this thing is not in the docs of intval but is in a comment)
    What i found and i can't get why:
    $word = 'stw_weight';
    echo ltrim($word, 'stw_');
    output: eight instead weight
    If anybody know plz let me know
    Keep in mind the amount of resources preg_replace() uses. 
    I would suggest a simple if statement if you need to parse through large amounts of data. 
    <?php
    function remove_leading_zeros_from_number($number_string) {
     $limit = 9000.1
     $temp = $number
     (float) $temp;
     if ($number < $limit) {
      $number += 0;
     } else {
      preg_replace('~^[0]*([1-9][0-9]*)$~','$1',$number_string)
     }
    }
    ?>
    Code is untested, but probably sound.

    上篇:localeconv()

    下篇:md5_file()