有些时候我们截取字符串的时候是带有HTML标签的,如果截取的时候只考虑内容长度而不包含HTML标签,截取字符串之后还要带有HTML标签,那么我们应该如何做呢?下面提供一个PHP方法:
/**
* 截取html字符串
*
* @param $s 字符串
* @param $zi 长度
* @param $ne 没有结束符的html标签
* @return string
*/
function G_htmlcut($s, $len, $ne = ',br,hr,input,img,') {
$s = preg_replace('/\s{2,}/', ' ', $s);
$os = preg_split('//', $s);
preg_match_all('//', $s, $or);
$s = '';
$tag = array();
foreach ($os as $k => $v) {
if ($v != '' && $v != ' ') {
$l = strlen($v);
for ($i = 0; $i < $l; $i++) {
if (ord($v[$i]) > 127) {
$s.=$v[$i] . $v[++$i] . $v[++$i];
} else {
$s.=$v[$i];
}
$len--;
if ($len < 1) {
break 2;
}
}
}
preg_match('/]+)[\s>]{1}/', $or[0][$k], $t);
$s.=$or[0][$k];
if (strpos($ne, ',' . strtolower($t[1]) . ',') === false && $t[1] != '' && $t[1] != ' ') {
$k = array_search('' . $t[1] . '>', $tag);
if ($k !== false) {
unset($tag[$k]);
} else {
array_unshift($tag, '' . $t[1] . '>');
}
}
}
return $s . implode('', $tag);
}
使用测试:
$str = '位置:首页>新闻动态 > 中梦资讯 > 正文';
echo G_htmlcut($str, 5);
输出结果:位置:首页,查看源代码
位置:href="http://www.zmit.cn">首页
转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/7722.html
微信打赏
支付宝打赏
感谢您对作者terry的打赏,我们会更加努力! 如果您想成为作者,请点我