php过滤html 只保留p,使用PHP substr()和strip_tags(),同时保留格式化和不破坏HTML - 程序园...

不惊人,但工程。

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值