加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何用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&#228;&#228;&#228;

我一直试图弄清楚如何在上面拆分这个字符串,不计算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

关于代码点的问题 – 您可能需要查看html_entity_decode,我认为将代码点(例如&#223)转换为它们所代表的字符.你需要给它一个字符集,所以它知道223意味着什么(因为’223’意味着取决于字符集).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读