关于php中trim、ltrim和rtrim

以ltrim为例

先看手册说明先

 

定义和用法

 

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

语法

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

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

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

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

 

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

[php] view plaincopy
 
  1. <?php  
  2.   
  3. $text = "\t\tThese are a few words :) ...  ";  
  4. $binary = "\x09Example string\x0A";  
  5. $hello  = "Hello World";  
  6. var_dump($text$binary$hello);  
  7.   
  8. print "\n";  
  9.   
  10.   
  11. $trimmed = ltrim($text);  
  12. var_dump($trimmed);  
  13.   
  14. $trimmed = ltrim($text" \t.");  
  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都是这个原理,只不过过滤的方向不一样罢了。

posted @ 2013-10-31 15:08  w7391108  阅读(462)  评论(0编辑  收藏  举报