2012-02-09 10 views
14

私はPHPでテキストを切り詰めようとしていますが、この方法(http://theodin.co.uk/blog/development/truncate-text-in-php-the-easy-way.html)を偶然見つけましたが、そのコメントで判断するのは簡単に実装できるソリューションのようです。問題は私がそれを実装する方法を知らないことです:S。PHPでテキストを切り捨てる?

これを実装するために何をすべきか指摘してもらえますか?どんな助けでも何かが認められるでしょう。

ありがとうございます。

+1

何を理解していませんか?あなたはどこで混乱していますか?それはあなたが与えるパラメータに基づいて、ソース文字列の一部を返す1つの関数です。 – Brad

+1

はい、単に 'substr()'を使用してください。最初のパラメータはテキスト、2番目はオフセットです.0に設定すると、1,2,3に設定すると先頭から切り捨てられます。 3番目の引数は切り捨てられるべき長さです。たとえば、 'substr(" hello world "、3、4)'は 'lo w'を返します。3の後に4文字を返します。 –

+0

[Multibyte Stringをn個の文字に切り捨てる]の重複が可能です。http://stackoverflow.com/questions/2154220/truncate-a-multibyte-string-to-n-chars) – Gordon

答えて

51

明らかなことは、documentationです。

しかし助けるために:substr($str, $start, $end);

$str

$startテキストではで開始する文字のインデックスです。あなたの場合、それは非常に始まりを意味する0である可能性があります。

$endは、どこで切り詰めるかです。たとえば、15文字で終了したいとします。

<?php 

$text = "long text that should be truncated"; 
echo substr($text, 0, 15); 

?> 

、あなたがこの得るでしょう:あなたはこのようにそれを記述します

long text that 

は理にかなっていますか?

EDIT

あなたが与えたリンクは、あなたが単語の途中で切断されないように所望の長さにテキストを細断した後、最後の空白を見つけるための機能です。しかし、重要なことの1つが欠けています。つまり、関数に渡される長さは、25文字にすることを前提にするのではなく、長さにしてください。だからここに更新されたバージョンです:

function truncate($text, $chars = 25) { 
    if (strlen($text) <= $chars) { 
     return $text; 
    } 
    $text = $text." "; 
    $text = substr($text,0,$chars); 
    $text = substr($text,0,strrpos($text,' ')); 
    $text = $text."..."; 
    return $text; 
} 

は、だからあなたの場合には、あなたがのfunctions.phpファイルにこの機能を貼り付けますし、あなたのページにこのようにそれを呼び出す:これはあなたのポストを切り倒すます

$post = the_post(); 
echo truncate($post, 100); 

100文字に等しいかそれ以上の空白が最後に出現するまでです。 100の代わりに任意の数を渡すことは明らかです。あなたは `SUBSTR()`について

+0

俳句の始まり? –

+0

は間違いありません。ほぼ正に本当に悪い –

+0

助けてくれてありがとう、私はこれを理解しようとしている。私が愚かな人から離れると、事前にお詫びします。だから私はリンクしたウェブサイトからその文字列をfunction.phpファイル(私はWordPressを使用しています)のようなものに入れますか?私が言っているのは、その機能をどこで宣言すればいいのでしょうか? – realph

3
$mystring = "this is the text that I would like to had truncated"; 

// Pass your variable to the function 
$mystring = truncat($mystring); 

// Truncated tring printed out; 
echo $mystring; 


//truncate text function 
public function truncate($text) { 

    //specify number fo characters to shorten by 
    $chars = 25; 

    $text = $text." "; 
    $text = substr($text,0,$chars); 
    $text = substr($text,0,strrpos($text,' ')); 
    $text = $text."..."; 
    return $text; 
} 
3
$text="abc1234567890"; 

// truncate to 4 chars 

echo substr(str_pad($text,4),0,4); 

これは、10文字に4文字の文字列を切り捨てるの問題を回避する。..(すなわち、ソースが必要なよりも小さくなっている)

+0

それは私が必要としたものです! :D –