一、基本用法
substr函数的基本用法是截取指定字符串的一段子串,其调用格式如下:string substr ( string $string , int $start [, int $length ] )其中,$string参数是必选的,代表需要截取的字符串;$start参数是必选的,代表最终返回的字符串的开始截取位置,从0开始计算;$length参数是可选的,代表需要截取的字符串长度。如果不指定$length参数,则直接返回从$start开始到字符串结尾的所有字符。 例子:
$str = "Hello, World!"; $substr = substr($str, 0, 5); echo $substr; // 输出Hello这个例子中,使用substr函数截取了$str的前5个字符,也就是从0开始截取长度为5的子串,最终得到的结果为Hello。
二、特殊用法
除了基础用法之外,substr函数还有一些特殊的用法,如下: 1. 使用负数作为$start参数,即从字符串的末尾开始计算截取位置。例如:$str = "Hello, World!"; $substr = substr($str, -6); echo $substr; // 输出World!这个例子中,$start参数为-6,代表从字符串的倒数第6个字符开始截取,最终得到的结果为World!。 2. 如果同时设置了$start参数和$length参数,则从起始位置开始截取指定长度的字符串。例如:
$str = "Hello, World!"; $substr = substr($str, 7, 5); echo $substr; // 输出World这个例子中,$start参数为7,$length参数为5,代表从字符串的第7个字符开始截取长度为5的子串,最终得到的结果为World。
三、语法规则
在使用substr函数时,需要注意一些语法规则,如下: 1. $start参数必须是一个整数值,否则会返回false值。 2. $length参数也必须是一个整数值,否则会返回false值。 3. 如果$start参数超出字符串的长度范围,substr函数将会返回false值。 4. 如果$length参数超出了字符串可用长度,那么substr将会截取从$start开始到字符串末尾的所有字符。 5. 如果$start参数为负数,则它代表的是截取字符串的倒数第N个字符。 6. 如果$length参数为负数,则它代表的是从$start开始截取的字符个数。四、实际应用
在实际应用中,substr函数可以用来处理很多文本处理的任务,例如: 1. 截取文件扩展名和文件名:$str = "test.php"; $ext = substr($str, strrpos($str, ".") + 1); // 获取文件扩展名 $name = substr($str, 0, strrpos($str, ".")); // 获取文件名 echo $ext; // 输出php echo $name; // 输出test2. 替换文本内容:
$str = "Hello, World!"; $start = strpos($str, ","); $newstr = substr_replace($str, "All", $start, 1); echo $newstr; // 输出Hello All World!3. 处理URL参数:
$url = "http://www.example.com/page.php?id=123"; $id = substr($url, strpos($url, "=") + 1); echo $id; // 输出123
五、实例代码
下面是一些使用substr函数的实例代码: 1. 截取HTML标记(截取从标记开始到
标记结束的内容):$html = "2. 截取姓名全拼的首字母(将姓名"张三"转换为"zs"):这是一个标题
这是一段文字
"; $start = strpos($html, ""); $end = strpos($html, "
"); $length = $end - $start - strlen(""); $title = substr($html, $start + strlen("
"), $length); echo $title; // 输出这是一个标题
$name = "张三"; $surname = substr($name, 0, 1); $givenname = substr($name, 1); $fullname = $surname . $givenname; $fullname_py = ''; for($i = 0 ; $i < strlen($fullname) ; $i++){ if(ord($fullname[$i])>=ord('a') && ord($fullname[$i])<=ord('z')){ //将小写字母转为大写字母 $fullname[$i] = chr(ord($fullname[$i]) - 32); } if(preg_match("/^[a-z]$/", $fullname[$i])){ // 如果是英文字母,添加至全拼缩写中 $fullname_py .= $fullname[$i]; } } echo $fullname_py; // 输出zs