web-dev-qa-db-ja.com

PHPでテキストを切り捨てますか?

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

誰かがこれを実装するために何をすべきかという方向に私を指し示すことを気にしますか?どんな助けでも感謝します。

前もって感謝します。

15
realph

明らかなことは 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 [〜#〜]

あなたが与えたリンクは、Wordの途中で途切れないように、テキストを希望の長さに切り詰めた後の最後の空白を見つける機能です。ただし、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の代わりに任意の数を渡すことができます。必要なものは何でも。

55
Kai Qing
$mystring = "this is the text I would like to truncate";

// Pass your variable to the function
$mystring = truncate($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
thenetimp
$text="abc1234567890";

// truncate to 4 chars

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

これにより、4文字の文字列を10文字に切り捨てる問題を回避できます。

3
FreudianSlip