一、substr函数的基础用法
substr函数是PHP中用来截取字符串的函数,其基本语法如下:
string substr ( string $string , int $start [, int $length ] )
参数说明:
string
:要截取的字符串start
:起始位置,如果为负数则表示从字符串末尾数起的位置length
:截取的长度,如果未指定则表示截取到字符串末尾
示例代码:
$str = "Hello, world!"; echo substr($str, 0, 5); // 输出:Hello echo substr($str, -6); // 输出:world!
解释:
- 第一行代码是将字符串“Hello, world!”从第0个字符开始截取5个字符,结果为“Hello”
- 第二行代码是将字符串“Hello, world!”从倒数第6个字符开始截取到末尾,结果为“world!”
二、substr函数的高级用法
除了基本的字符串截取外,substr函数还可以和其他函数结合使用,实现更为复杂的功能。
1. 截取中文字符串
由于中文字符占用的字节数不同,所以如果要截取中文字符串就需要进行特殊处理。下面是截取中文字符串的示例代码:
function subtext($text, $length) { if(mb_strlen($text, 'utf8') > $length) { $text = mb_substr($text, 0, $length, 'utf8') . '...'; } return $text; } $text = "这是一段中文字符串,用于测试截取函数的功能。"; echo subtext($text, 10); // 输出:这是一段中文字...
解释:
- 该函数首先使用mb_strlen函数获取字符串长度,以确保正确截取中文字符串
- 然后使用mb_substr函数截取字符串,并在末尾添加省略号
- 最后返回截取后的字符串
2. 截取HTML代码
如果要截取包含HTML标签的字符串,需要注意不能使得标签不完整。下面是截取HTML代码的示例代码:
function htmlCut($html, $length) { $flag = 0; $output = ''; $patten = "/<[^>]+>([^<]*)/"; preg_match_all($patten, $html, $matches, PREG_OFFSET_CAPTURE); foreach ($matches[0] as $val) { if($flag >= $length) { break; } $length -= $flag; $str = mb_substr($val[0], 0, $length, 'utf8'); if(mb_substr_count($val[0], '<') > mb_substr_count($val[0], '>')) { $output .= $str; break; } $flag += strlen($str); $output .= $val[0]; } return $output; } $html = ''; echo htmlCut($html, 10); // 输出:HTML截取示例
这是一段包含HTML标签的文字,用于测试截取函数的功能。
HTML截取示例
这是一...(保证HTML标签完整)
解释:
- 该函数首先使用正则表达式匹配HTML标签和文字
- 然后逐个截取标签和文字,直到达到指定的长度,同时保证截取到的标签是完整的
- 最后返回截取后的HTML代码
三、实际应用场景
substr函数在实际的开发中可以用于很多场景,例如:
1. 截取标题
在展示博客、新闻等文章列表时,通常只显示文章标题的一部分,这时就可以使用substr函数来截取标题字符串。示例代码如下:
$title = "PHP字符串截取-从substr函数到实际应用"; echo '' . substr($title, 0, 15) . '...
'; // 输出:PHP字符串截取-...
2. 截取文件名和后缀
在上传文件时,需要对文件名进行处理,通常是截取文件名和后缀。示例代码如下:
$file = "picture.jpg"; $filename = substr($file, 0, strrpos($file, '.')); $ext = substr($file, strrpos($file, '.') + 1); echo "文件名:$filename,后缀:$ext"; // 输出:文件名:picture,后缀:jpg
3. 截取字符串并加链接
在展示长文本时,可以截取一部分文字,同时加上“查看更多”链接。示例代码如下:
$content = "这是一段很长的文字,用于测试截取函数的功能。"; echo substr($content, 0, 20) . '...查看更多'; // 输出:这是一段很长的文字,用于测试截取...查看更多
通过上面的几个实例,你可以看到substr函数在实际的开发中有着广泛的应用场景。