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

php – 自动从字符串生成摘要

发布时间:2020-12-13 17:06:13 所属栏目:PHP教程 来源:网络整理
导读:给定字符串的输入,我们需要通过将字符串的末尾修剪为给定长度来生成非常简单的摘要形式. 这是第一个版本功能: // Take an array of strings and generate a summary within a given lengthfunction stringSummaryFromMetadata($inArray,$len=80,$sep='§'){
给定字符串的输入,我们需要通过将字符串的末尾修剪为给定长度来生成非常简单的摘要形式.

这是第一个版本功能:

// Take an array of strings and generate a summary within a given length
function stringSummaryFromMetadata($inArray,$len=80,$sep='§'){

    // Filter out 'false' values
    $inputs=array_filter($inArray);

    // First try just imploding array
    $res=implode($sep,$inputs);

    // Check for length
    if(mb_strlen($res,'utf8')>$len){

        // Calculate 'z' the fixed width constant
        $x=count($inputs);
        $z=round(($len-$x)/$x);

        // Snip all strings to 'z'
        $t1=array();
        foreach($inputs as $i) $t1[]=mb_substr($i,$z);

        // Final answer
        $res=implode($sep,$t1);
    }

    return $res;
}

一个测试:

$test=array(
    'Ligula diam risus tempus lorem sit','Cursus metus commodo enim odio orci','Metus sapien porta sapien fusce sodales','king queen'
);
$out=stringSummaryFromMetadata($test);
print $out;

这使:

Ligula diam risus t§Cursus metus
commod§Metus sapien porta §king queen

这足够好,但它可以更加优化,我很确定.例如,测试输出少于80个字母,修剪后字符串末尾的空格,单词被切断等.

在我进行切线并自行滚动之前,我想问一下社区是否曾经问过这个问题和/或是否已经存在算法.

解决方法

您可以使用 wordwrap,然后计算结果字符串中的行数.如果多于一个,则文本比所需的长,所以将分隔符追加到第一行的末尾,并丢弃其他行.如果只有一行,则文本较短,因此不进行修剪.

似乎wordwrap没有utf8意识,但是有一个comment显示了一个utf8_wordwrap工作函数.

(编辑:李大同)

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

    推荐文章
      热点阅读