php对包含html标签的字符串进行截取的函数分享

下面是讲解“php对包含html标签的字符串进行截取的函数分享”的完整攻略。

下面是讲解“php对包含html标签的字符串进行截取的函数分享”的完整攻略。

1. 函数介绍

PHP 中,截取字符串我们通常会用到 substr() 函数,但是这个函数对于包含 HTML 标签的字符串会去掉这些标签,因此如果需要截取保留 HTML 标签的字符串,我们可以使用 strip_tags() 函数去掉 HTML 标签,然后再进行截取。

具体的实现逻辑就是先使用 strip_tags() 函数去掉 HTML 标签,然后再使用 substr() 函数截取字符串。

下面是完整的函数定义:

/**
 * 截取包含 HTML 标签的字符串
 *
 * @param string $str 要截取的字符串
 * @param int $length 截取长度
 * @param bool $suffix 是否添加省略号
 *
 * @return string
 */
function sub_str($str, $length = 100, $suffix = true)
{
    $str = strip_tags($str);

    if (mb_strlen($str) > $length) {
        $str = mb_substr($str, 0, $length);
        if ($suffix) {
            $str .= " ...";
        }
    }

    return $str;
}

2. 函数实现

如上所述,我们可以先用 strip_tags() 函数去除 HTML 标签,再用 substr() 函数截取字符串,最后可以使用 mb_strlen() 函数获取字符串的长度,其中 mb_ 开头的函数是 PHP 中用来处理多字节字符编码的函数,例如 UTF-8 编码。

下面举两个例子来说明:

例子一

要截取的字符串为:

<h1>这是一个标题</h1>
<p>这是一个段落,包含了<strong>一些强调的</strong>文字。</p>

执行如下代码:

$str = "<h1>这是一个标题</h1><p>这是一个段落,包含了<strong>一些强调的</strong>文字。</p>";
$sub_str = sub_str($str, 20);
echo $sub_str;

输出结果:

这是一个标题这是一个段落,包

可以看到,截取结果中没有 HTML 标签。

例子二

要截取的字符串为:

<p>这是一段包含图片的文字。</p><img src="https://example.com/image.jpg">

执行如下代码:

$str = "<p>这是一段包含图片的文字。</p><img src='https://example.com/image.jpg'>";
$sub_str = sub_str($str, 20);
echo $sub_str;

输出结果:

这是一段包含图片的文字 ...

可以看到,因为第二个参数是 20,所以截取到了第 20 个字符处,并在结尾添加了省略号。

以上就是关于“php对包含html标签的字符串进行截取的函数分享”的完整攻略了。

本文标题为:php对包含html标签的字符串进行截取的函数分享

基础教程推荐