截断字符串,使用更多大写字母时应缩短

用户名
<echo $this->Text->truncate(strip_tags($news['Newspost']['article_' . $lang]), 200, array('ending' => ' ...', 'exact' => false, 'html' => true));>

我们目前正在网站上使用它来在我们的主页上创建新闻发布的预览。当新闻发布中包含太多的大写字母或宽度较大的符号(@#...)时,截断将无法正常工作,并显示多余的一行。

一种解决方案是仅仅缩短截短时间,但这对于普通帖子来说看起来并不好。

最好的方法是什么?一个页面上大约有10-20个帖子,重要的是,我们的网站上有很多同时用户(100-500)。因此,我不想添加一些奇怪的东西,这些东西会使网站的运行速度大大降低。

在此处输入图片说明

卡他林B
<?php



    function count_capitals($s) {
        return strlen(preg_replace('![^A-Z]+!', '', $s));
    }

    function truncate_str($str, $limit=30) {
        if( $limit < 3 ) $limit = 3;
        if( strlen($str) > $limit ) return substr($str, 0, $limit - 3) . ' ...';
        return $str;
    }   

    function showTextByCapitalPercent($percent,$str) {
        $int_percent = (int)$percent;
        // 0-24% capitals
        if( in_array($int_percent,range(0,24) ) ) {
            return truncate_str($str, $limit=50)."\n";
        }

        // 25-49% capitals
        if( in_array($int_percent,range(25,49) ) ) {
            return truncate_str($str, $limit=40)."\n";
        }   

        // 50-74% capitals
        if( in_array($int_percent,range(50,74) ) ) {
            return truncate_str($str, $limit=30)."\n";
        }    

        // 75-100% capitals
        if( in_array($int_percent,range(75,100) ) ) {
            return truncate_str($str, $limit=20)."\n";
        }
        return '';
    }   


    $str1 = "Lorem ipsum dolor sit Amet, consectetur adipiscing elit. ";
    $str2 = "Fusce eu mauris libero. Morbi auctor lobortis ex, pulvinar fermentum massa. ";
    $str3 = "Cras DOLOR IPSUM, CONGUE EU ornare VITAE, egestas SED URNA. ";
    $str4 = "Nunc NEC urna MOLLIS, rutrum nisi eu, bibendum turpis.";


    $percent_capitals_str1 = (count_capitals($str1)*100)/strlen($str1);
    $percent_capitals_str2 = (count_capitals($str2)*100)/strlen($str2);
    $percent_capitals_str3 = (count_capitals($str3)*100)/strlen($str3);
    $percent_capitals_str4 = (count_capitals($str4)*100)/strlen($str4);


    echo "<pre>";

    echo "capitals str1: ".$percent_capitals_str1."%\n";
    echo "capitals str2: ".$percent_capitals_str2."%\n";
    echo "capitals str3: ".$percent_capitals_str3."%\n";
    echo "capitals str4: ".$percent_capitals_str4."%\n";

    echo "\n-------------------------\n";

    echo "str1: ".showTextByCapitalPercent($percent_capitals_str1,$str1)."\n";
    echo "str2: ".showTextByCapitalPercent($percent_capitals_str2,$str2)."\n";
    echo "str3: ".showTextByCapitalPercent($percent_capitals_str3,$str3)."\n";
    echo "str4: ".showTextByCapitalPercent($percent_capitals_str4,$str4)."\n";



/*
out
capitals str1: 3.5087719298246%
capitals str2: 2.6315789473684%
capitals str3: 51.666666666667%
capitals str4: 18.518518518519%

-------------------------
str1: Lorem ipsum dolor sit Amet, consectetur adipisc ...
str2: Fusce eu mauris libero. Morbi auctor lobortis e ...
str3: Cras DOLOR IPSUM, CONGUE EU ...
str4: Nunc NEC urna MOLLIS, rutrum nisi eu, bibendum  ...
*/

?>

从字符串中获取资本百分比,并按百分比大小应用截断

例1:大写= 10%仅显示50个字符

例2:大写= 21%仅显示33个字符....

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当大写字母在R中的单词中间跟随大写字母时拆分字符串

来自分类Dev

当大写字母在R中的单词中间跟随大写字母时拆分字符串

来自分类Dev

Javascript,以大写字母拆分字符串并隔离大写字母

来自分类Dev

字符串中的PHP大写字母

来自分类Dev

在大写字母或数字上分割字符串

来自分类Dev

用大写字母替换字符串函数

来自分类Dev

从字符串中删除大写字母

来自分类Dev

使用Python计算字符串中的大写字母

来自分类Dev

如何使用大写字母作为分隔符来爆炸字符串?

来自分类Dev

使用php计算字符串中大写字母的数量

来自分类Dev

如何在Swift中使用NSRegularExpression用大写字母替换字符串?

来自分类Dev

使用正则表达式搜索字符串中的大写字母

来自分类Dev

在stringr中拆分大写字母紧跟小写字母的字符串

来自分类Dev

在整个字符串中匹配2个或更多大写字符

来自分类Dev

使用perl删除字符串中除首字母之外的所有大写字母

来自分类Dev

字符串长度、大写字母个数和字符串中的数字个数

来自分类Dev

替换字符串中的字母但不是特殊字符和大写字母(Java)

来自分类Dev

Javascript:在字符串中,替换大写字母及其后的所有字母

来自分类Dev

SQL Server,将字母数字字符串转换为大写字母数字

来自分类Dev

JavaScript使用正则表达式按大写字母拆分字符串,但在一起时除外

来自分类Dev

如何按字母顺序对字符串进行排序,使小写字母排在大写字母之前?

来自分类Dev

如何按字母顺序对字符串进行排序,使小写字母排在大写字母之前?

来自分类Dev

如何使用正则表达式返回熊猫中字符串中的所有大写字母

来自分类Dev

如何使用正则表达式返回熊猫中字符串中的所有大写字母

来自分类Dev

用小写字母和连字符替换整个字符串中的大写字母

来自分类Dev

Javascript:如何确定文本字符串中的哪些字符是大写字母?

来自分类Dev

如何反转包含以大写字母,小写字母开头的字符串的元素的列表

来自分类Dev

如何验证字符串中相同,重复的大写字母和小写字母?

来自分类Dev

使用大写字母时,不同的字母大小

Related 相关文章

  1. 1

    当大写字母在R中的单词中间跟随大写字母时拆分字符串

  2. 2

    当大写字母在R中的单词中间跟随大写字母时拆分字符串

  3. 3

    Javascript,以大写字母拆分字符串并隔离大写字母

  4. 4

    字符串中的PHP大写字母

  5. 5

    在大写字母或数字上分割字符串

  6. 6

    用大写字母替换字符串函数

  7. 7

    从字符串中删除大写字母

  8. 8

    使用Python计算字符串中的大写字母

  9. 9

    如何使用大写字母作为分隔符来爆炸字符串?

  10. 10

    使用php计算字符串中大写字母的数量

  11. 11

    如何在Swift中使用NSRegularExpression用大写字母替换字符串?

  12. 12

    使用正则表达式搜索字符串中的大写字母

  13. 13

    在stringr中拆分大写字母紧跟小写字母的字符串

  14. 14

    在整个字符串中匹配2个或更多大写字符

  15. 15

    使用perl删除字符串中除首字母之外的所有大写字母

  16. 16

    字符串长度、大写字母个数和字符串中的数字个数

  17. 17

    替换字符串中的字母但不是特殊字符和大写字母(Java)

  18. 18

    Javascript:在字符串中,替换大写字母及其后的所有字母

  19. 19

    SQL Server,将字母数字字符串转换为大写字母数字

  20. 20

    JavaScript使用正则表达式按大写字母拆分字符串,但在一起时除外

  21. 21

    如何按字母顺序对字符串进行排序,使小写字母排在大写字母之前?

  22. 22

    如何按字母顺序对字符串进行排序,使小写字母排在大写字母之前?

  23. 23

    如何使用正则表达式返回熊猫中字符串中的所有大写字母

  24. 24

    如何使用正则表达式返回熊猫中字符串中的所有大写字母

  25. 25

    用小写字母和连字符替换整个字符串中的大写字母

  26. 26

    Javascript:如何确定文本字符串中的哪些字符是大写字母?

  27. 27

    如何反转包含以大写字母,小写字母开头的字符串的元素的列表

  28. 28

    如何验证字符串中相同,重复的大写字母和小写字母?

  29. 29

    使用大写字母时,不同的字母大小

热门标签

归档