新手 在php的学习过程中中,遇到substr()这个函数, 刚开始有点难理解,那么这个函数到底有什么功能呢?
substr()返回字符串的一部分(指定开始和长度参数);
手纸(php手册)里边是这样描述的 string substr ( string string, int start [, int length] )
括号里边的string是你要从中间取字符的内容(这个必须得有),start是开始的位置,length是所取的长度。
下边是基本的例子:
<?php
echo substr('abcdef', 1); // bcdef
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f
?>
第一个echo的substr()后边只有一个数字,这个数字就是我们描述里边的start,意思是从字符abcdef的第一位起往后取所有的字符(因为第三个参数length长度没有定义,php默认取第一位后边的所有字符,【包括第一位】),start的位数是从0位开始的,也就是0位对应的是a字符,第一位对应的是b。echo substr('abcdef',1);就是取第一位开始(也就是b,包括b)向后边取所有的字符。
第二个echo同理从第一位开始,但是只取3个长度的字符所以只有bcd
第三个echo道理是一样的,从第0位开始取,取4个长度。
第四个取得长度大于原有字符长度,所以就全取啦。
第五个echo有个负号,负号就是从后边开始数,记住从后边开始数的时候没有0的因此,-1就对应的是f 这个字符,取1个长度,那就是f了。
很好理解吧。
还有一种情况是长度为负数:
<?php
echo substr("abcdef", 0, -1); // returns "abcde"
echo substr("abcdef", 2, -1); // returns "cde"
echo substr("abcdef", 4, -4); // returns ""
echo substr("abcdef", -3, -1); // returns "de"
?>
长度为负数可以理解为去掉倒数第几位以后的字符
如第一个echo 就是从第0位取起,取到abcdef,并且去掉最后一位字符f,就得到abcde.
第二个echo就同理了,从第二个(也就是c字符)取起,去掉f
而第三个有点奇怪了,显然为空字符对不对。
第四个就是从-3位(也就是d字符),-1位置的f不要,就是de了。
【Haizy 原创 】