如何用PHP拆分长字符串?
发布时间:2020-12-13 17:01:49 所属栏目:PHP教程 来源:网络整理
导读:我目前正在寻找拆分可能包含 HTML特征的非常长的字符串. 一个例子是: Thiiiissssaaaveryyyylonnngggstringgg 为此我过去使用过这个功能: function split($sString,$iCount = 75){ $text = $sString; $new_text = ''; $text_1 = explode('',$text); $sizeof
我目前正在寻找拆分可能包含
HTML特征的非常长的字符串.
一个例子是: Thiiiissssaaaveryyyylonnngggstringgg 为此我过去使用过这个功能: function split($sString,$iCount = 75) { $text = $sString; $new_text = ''; $text_1 = explode('>',$text); $sizeof = sizeof($text_1); for ($i=0; $i<$sizeof; ++$i) { $text_2 = explode('<',$text_1[$i]); if (!empty($text_2[0])) { $new_text .= preg_replace('#([^nr .]{'. $iCount .'})#iu','1 ',$text_2[0]); } if (!empty($text_2[1])) { $new_text .= '<' . $text_2[1] . '>'; } } return $new_text; } 该函数用于拾取这些字符并在X字符后拆分它们.问题是当HTML或ASCII字符混合在一起时,如下所示: Thissssiisss<a href="#">lonnnggg</a>stingäää 我一直试图弄清楚如何在上面拆分这个字符串,不计算HTML标签中的字符数,并将每个ASCII字符计为1. 任何帮助都会很棒. 谢谢 解决方法
如果你担心
wordwrap 的UTF-8支持,那么你想要这个:
function utf8_wordwrap($str,$width = 75,$break = "n") // wordwrap() with utf-8 support { $str = preg_split('#[snr]+#',$str); $len = 0; foreach ($str as $val) { $val .= ' '; $tmp = mb_strlen($val,'utf-8'); $len += $tmp; if ($len >= $width) { $return .= $break . $val; $len = $tmp; } else { $return .= $val; } } return $return; } 资料来源:PHP Manual Comment 关于代码点的问题 – 您可能需要查看 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |