• 关于php中trim、ltrim和rtrim


    以ltrim为例

    先看手册说明先

    定义和用法

    ltrim() 函数从字符串左侧删除空格或其他预定义字符。

    语法

    ltrim(string,charlist)
    参数描述
    string 必需。规定要转换的字符串。
    charlist

    可选。规定从字符串中删除哪些字符。

    如果未设置该参数,则全部删除以下字符:

    • "" - ASCII 0, NULL
    • " " - ASCII 9, 制表符
    • " " - ASCII 10, 新行
    • "x0B" - ASCII 11, 垂直制表符
    • " " - ASCII 13, 回车
    • " " - ASCII 32, 空格

    貌似看不出什么。看下手册中的例子。

    [php] view plaincopy
     
    1. <?php  
    2.   
    3. $text = " These are a few words :) ...  ";  
    4. $binary = "x09Example stringx0A";  
    5. $hello  = "Hello World";  
    6. var_dump($text$binary$hello);  
    7.   
    8. print " ";  
    9.   
    10.   
    11. $trimmed = ltrim($text);  
    12. var_dump($trimmed);  
    13.   
    14. $trimmed = ltrim($text"  .");  
    15. var_dump($trimmed);  
    16.   
    17. $trimmed = ltrim($hello"Hdle");  
    18. var_dump($trimmed);  
    19.   
    20. // trim the ASCII control characters at the beginning of $binary  
    21. // (from 0 to 31 inclusive)  
    22. $clean = ltrim($binary"x00..x1F");  
    23. var_dump($clean);  
    24.   
    25. ?>   

    以上会输出:

    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
    "

    貌似只说了过滤空格、制表符什么的。

    当然我们有时候也会这么写:

    [php] view plaincopy
     
    1. $str = 'tmp_member';  
    2. echo ltrim($str'tmpe_');  

    输出结果为 ember

    但是这貌似不是我们想要的结果(member)这是为什么呢?

    我们再写几个类似的语句试试先

    [php] view plaincopy
     
    1. $str1 = 'tmp_umember';  
    2. echo ltrim($str1'tmp_');  
    3. echo '<br />';  
    4. $str2 = 'tmp_mpmmtmpmpmmember';  
    5. echo ltrim($str2'tmp_');  
    6. echo '<br />';  
    7. $str3 = 'tmp_mpmmtmpmpmmember';  
    8. echo ltrim($str3'tmpe_');  

    以上的输出结果为:

    umember
    ember
    ber

    综上所述,ltrim函数的第二个参数只是个字符列表而不算做一整个字符串,m是字符列表中包含的字符,所以就ltrim掉了。

    ltrim过滤的时候遇到非字符列表中的字符就停止过滤,返回过滤后的值。

    所以,才会出现上面的三个结果。

    同理 rtrim和trim都是这个原理,只不过过滤的方向不一样罢了。

  • 相关阅读:
    欢迎使用CSDN-markdown编辑器
    欢迎使用CSDN-markdown编辑器
    Math类简介
    Math类简介
    http_server
    tcp服务器
    swoole安装
    laravel源码解析
    VMware的Unity模式
    string.format() %d越界的问题
  • 原文地址:https://www.cnblogs.com/dest/p/3399363.html
Copyright © 2020-2023  润新知