问题
希望从字符串的某个特定位置开始抽取这个字符串的一部分。例如,对于输入到一个表单的用户名,想要得到这个用户名的前8个字符。
解决
使用substr()
选择子串
$substring = substr($string,$start,$length);
$username = substr($_GET['username'],0,8);
讨论
1.如果$strart
和$length
都是正数,substr()
会返回字符串从$start
开始的$lenfth
个字符。字符的第一个位置为0
。
echo substr('I Love PHP!',3,5);
ove P
- 如果忽略
$length
,substr()
会返回从$strart
到原字符串末尾的子串。
起始位置为正数,未指定长度
echo substr('I Love PHP!',3);
ove PHP!
- 如果
$start
大于字符串的长度,substr()
将会返回false
- 如果
$start
加$length
超过了字符串末尾,substr()
将返回从$start
开始到字符串末尾的所有字符
echo substr('I Love PHP!',3,9);
ove PHP!
- 如果
$start
为负数,substr()
会从字符串末尾倒数来确定子串从哪里开始
echo substr('I Love PHP!',-4);
PHP!
echo substr('I Love PHP!',-4,3);
PHP
-
如果
$start
值为负数,而且超过了字符串的开始位置,substr()
就会把$start
当作0
来处理 -
如果
$length
为负数,substr()
会从字符串末尾倒数来确定到哪里结束
echo substr('I Love PHP!',3,-1);
Love PHP
echo substr('I Love PHP!',-4,-2);
PH