2009-03-27 8 views
5

私は自分自身にこの関数が必要であることを発見し、既にPHPに存在するかどうか疑問に思っていました。だから、この関数はPHPに存在しますか?

/** 
* Truncates $str and returns it with $ending on the end, if $str is longer 
* than $limit characters 
* 
* @param string $str 
* @param int $length 
* @param string $ending 
* @return string 
*/ 
function truncate_string($str, $length, $ending = "...") 
{ 
    if (strlen($str) <= $length) 
    { 
     return $str; 
    } 
    return substr($str, 0, $length - strlen($ending)).$ending; 
} 

上限は40で、文字列が「クイックキツネが怠惰な茶色の犬を飛び越えた」され、出力は「クイックキツネが怠惰な眉を飛び越えた...」となります。それはPHPに存在するようなものだと思うので、私はそれを見つけることができないときに驚いた。

答えて

2

いいえ、それは存在しません。しかし、多くの図書館ではそれが必要です。例えばSmarty

1

これはありません。

5
$suffix = '...'; 
$maxLength = 40; 

if(strlen($str) > $maxLength){ 
    $str = substr_replace($str, $suffix, $maxLength); 
} 

実装は、サフィックスの長さが文字列の長さの合計に含まれるかどうかによって若干異なる場合があります。

+0

のための1つのラインバージョンです。 –

+0

本当に、あなた自身の関数でそれをラップする必要があります。それは、その条件に基づいてsubstr_replace()を実行するだけです。 –

4

は、ここでそれは$ maxLengthのより短い文字列に接尾辞を付加しますので、何もいいません興味のある方

<?php 
    echo (strlen($string) > 40 ? substr($string, 0, 37)."..." : $string); 
?> 
+0

これも私の最初の反応でした。あなたの文字列の長さからあなたのサフィックスの長さを引くか、そうでなければ43文字の結果を返す –

+0

良い仕事だが、あなたがいる極端なスピードの状況でない限り、簡単に3進コードよりもコードを読む方が良いこれを100万回繰り返します。 – TravisO

+0

もちろん、私は同意します。それで、興味のある人のための私の表現。 –

関連する問題