zoukankan      html  css  js  c++  java
  • 关于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都是这个原理,只不过过滤的方向不一样罢了。

  • 相关阅读:
    241. Different Ways to Add Parentheses java solutions
    89. Gray Code java solutions
    367. Valid Perfect Square java solutions
    46. Permutations java solutions
    116. Populating Next Right Pointers in Each Node java solutions
    153. Find Minimum in Rotated Sorted Array java solutions
    判断两颗树是否相同
    求二叉树叶子节点的个数
    求二叉树第k层的结点个数
    将二叉排序树转换成排序的双向链表
  • 原文地址:https://www.cnblogs.com/dest/p/3399363.html
Copyright © 2011-2022 走看看