刚好有人问这个问题,正好记录一下,毕竟快一年没更新博客了。
php中的trim函数通常用于清除前后多余字符,可设置参数可不设置,如果不设置参数,默认清除前后空格,回车等等。
那么先看一下例子

$str = 'abc66646abc666';
echo trim($str, 'abc666');

这里会输出什么呢?好多人可能第一感觉就是输出'46',毕竟前后替换'abc666'嘛。
然而当我们实际运行的时候发现输出结果为:

4

这是为什么呢?梳理一下trim函数的实现原理啊,trim是逐字符匹配的,划重点,逐字符匹配!
以上面例子为例:

trim开始工作,从左往右(或者从右往左)开始匹配取出第一个字符a,字符a在需要替换的'abc666'里面,所以a被干掉。
然后取出第二个字符b,字符b也在需要替换的'abc666'里面,所以b也被干掉了。
然后一直匹配到字符4,字符4不在需要替换的'abc666'里面,所以从左往右匹配停止,这个时候剩下'46abc666',
然后从右往左匹配,匹配过程同从左往右,最后一直匹配到4,所以最后结果为4;

看到这里相信也明白了.

echo trim($str, 'abc666');里面的abc666其实也可以写成abc6,效果是一样的

最后再画一个重点:逐字符匹配