2016-09-17 5 views
0
<echo $this->Text->truncate(strip_tags($news['Newspost']['article_' . $lang]), 200, array('ending' => ' ...', 'exact' => false, 'html' => true));> 

現在、私たちのウェブサイトでこれを使って、メインページに新聞のプレビューを作成しています。 新聞に大きな幅の大文字または記号(@#...)が多すぎると、切り詰めが正しく機能せず、余分な行が表示されます。大文字を使用すると文字列が短くなります

解決策の1つは、トランケートを短くすることですが、通常の投稿にはあまり適していません。

この問題を解決するにはどうすればよいでしょうか? これらの投稿のうち約10〜20件がページにあります。重要な場合は、当社のウェブサイトに多数の同時ユーザー(100〜500人)がいます。 私はサイトをあまりにも遅くする奇妙なものを追加したくありません。

enter image description here

答えて

0
<?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 ... 
*/ 

?> 

あなたの文字列から資本パーセントを取得し、パーセント

EX1の大きさによって、TRUNCATEを適用します。大文字= 10%のショーのみ50文字

EX2:首都= 21 %表示のみ33文字....

関連する問題