关于php中trim、ltrim和rtrim
以ltrim为例
先看手册说明先
定义和用法
ltrim() 函数从字符串左侧删除空格或其他预定义字符。
语法
ltrim(string,charlist)
参数 | 描述 |
---|---|
string | 必需。规定要转换的字符串。 |
charlist |
可选。规定从字符串中删除哪些字符。 如果未设置该参数,则全部删除以下字符:
|
貌似看不出什么。看下手册中的例子。
- <?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);
- // trim the ASCII control characters at the beginning of $binary
- // (from 0 to 31 inclusive)
- $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 "
貌似只说了过滤空格、制表符什么的。
当然我们有时候也会这么写:
- $str = 'tmp_member';
- echo ltrim($str, 'tmpe_');
输出结果为 ember
但是这貌似不是我们想要的结果(member)这是为什么呢?
我们再写几个类似的语句试试先
- $str1 = 'tmp_umember';
- echo ltrim($str1, 'tmp_');
- echo '<br />';
- $str2 = 'tmp_mpmmtmpmpmmember';
- echo ltrim($str2, 'tmp_');
- echo '<br />';
- $str3 = 'tmp_mpmmtmpmpmmember';
- echo ltrim($str3, 'tmpe_');
以上的输出结果为:
umember
ember
ber
综上所述,ltrim函数的第二个参数只是个字符列表而不算做一整个字符串,m是字符列表中包含的字符,所以就ltrim掉了。
ltrim过滤的时候遇到非字符列表中的字符就停止过滤,返回过滤后的值。
所以,才会出现上面的三个结果。
同理 rtrim和trim都是这个原理,只不过过滤的方向不一样罢了。