php源码分析trim函数的实现

PHP administrator 763℃
trim      – 去除字符串首尾处的空白字符(或者其他字符)
ltrim     – 删除字符串开头的空白字符(或其他字符)
rtrim     – 删除字符串末端的空白字符(或者其他字符)
 
该函数区分大小写
此函数返回字符串 str 去除首尾空白字符后的结果。如果不指定第二个参数,trim() 将去除这些字符: 
” ”      (ASCII 32 (0x20)),普通空格符。 
“\t”     (ASCII 9 (0x09)),制表符。 
“\n”    (ASCII 10 (0x0A)),换行符。 
“\r”     (ASCII 13 (0x0D)),回车符。 
“\0”     (ASCII 0 (0x00)),空字节符。 
“\x0B”  (ASCII 11 (0x0B)),垂直制表符。
 

在实际开发中遇到关于 trim 函数的2个问题:
1:使用trim函数不能去除2个以上的连续点号(.)
2 : 使用trim函数去除字符串的问题 。


先说一下第一个问题。
下面的一段代码:
php -r “echo trim(‘abcdcba…’,’…’);”
我的本意是要将字符串abcdcba…最后三个点去掉,结果是报错。

PHP Warning: trim(): Invalid ‘..’-range, no character to the left of ‘..’ in Command line code on line 1
Warning: trim(): Invalid ‘..’-range, no character to the left of ‘..’ in Command line code on line 1
PHP Warning: trim(): Invalid ‘..’-range, no character to the right of ‘..’ inCommand line code on line 1
Warning: trim(): Invalid ‘..’-range, no character to the right of ‘..’ in Command line code on line 1
这个问题其实很好解释,因为 trim 函数本书可以范围操作,

例如 如果trim函数的第二个参数 a..d,它就会把a b c d 都去掉。因为省略号的原因,所以trim函数的第二个参数不能用..开头或者结尾。

 

第二个问题:
再看一个例子:
php -r ‘echo trim(“abcdcba”,”abc”).”\n”;’
我的本意是将字符串abcdcba最前面的abc去掉保留dcba,但结果却是这样的:
d
也就是说他会把a b c分别去掉。这应该算是个坑吧。

再比如: trim(“10:00″,”:00′);   输出结果居然是  1

 

所以以后在使用trim函数的时候需要注意下。

 

转载请注明:LuckRay » php源码分析trim函数的实现

喜欢 (0)