在保留格式且不破坏HTML的情况下使用PHP substr()和strip_tags()

在保留格式且不破坏HTML的情况下使用PHP substr()和strip_tags(),第1张

在保留格式且不破坏HTML的情况下使用PHP substr()和strip_tags()

并不令人惊讶,但可以。

function html_cut($text, $max_length){    $tags   = array();    $result = "";    $is_open   = false;    $grab_open = false;    $is_close  = false;    $in_double_quotes = false;    $in_single_quotes = false;    $tag = "";    $i = 0;    $stripped = 0;    $stripped_text = strip_tags($text);    while ($i < strlen($text) && $stripped < strlen($stripped_text) && $stripped < $max_length)    {        $symbol  = $text{$i};        $result .= $symbol;        switch ($symbol)        {case '<':     $is_open   = true;     $grab_open = true;     break;case '"':    if ($in_double_quotes)        $in_double_quotes = false;    else        $in_double_quotes = true; break; case "'":   if ($in_single_quotes)       $in_single_quotes = false;   else       $in_single_quotes = true; break; case '/':     if ($is_open && !$in_double_quotes && !$in_single_quotes)     {         $is_close  = true;         $is_open   = false;         $grab_open = false;     }     break; case ' ':     if ($is_open)         $grab_open = false;     else         $stripped++;     break; case '>':     if ($is_open)     {         $is_open   = false;         $grab_open = false;         array_push($tags, $tag);         $tag = "";     }     else if ($is_close)     {         $is_close = false;         array_pop($tags);         $tag = "";     }     break; default:     if ($grab_open || $is_close)         $tag .= $symbol;     if (!$is_open && !$is_close)         $stripped++;        }        $i++;    }    while ($tags)        $result .= "</".array_pop($tags).">";    return $result;}

用法示例

$content = html_cut($content, 100);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5641086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存