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

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 自动从字符串生成摘要脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
给定字符串的输入,我们需要通过将字符串的末尾修剪为给定长度来生成非常简单摘要形式.

这是第一个版本功能

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

这使:

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

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

解决方法

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

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

脚本宝典总结

以上是脚本宝典为你收集整理的php – 自动从字符串生成摘要全部内容,希望文章能够帮你解决php – 自动从字符串生成摘要所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。