在PHP中截断文本?

时间:2012-02-09 22:25:34

标签: php truncate

我正在尝试在PHP中截断一些文本并且偶然发现了这个方法(http://theodin.co.uk/blog/development/truncate-text-in-php-the-easy-way.html),从评论来看,这似乎是一个非常容易实现的解决方案。问题是我不知道如何实现它:S。

有人会介意我指明如何实施这项工作吗?任何帮助都将不胜感激。

提前致谢。

3 个答案:

答案 0 :(得分:54)

显而易见的是阅读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 

有道理吗?

修改

您提供的链接是在将文本切割为所需长度后找到最后一个空格的功能,因此您不会在单词的中间切断。但是,它缺少一个重要的东西 - 传递给函数的所需长度,而不是总是假设你希望它是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。无论你需要什么。

答案 1 :(得分:3)

$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;
}

答案 2 :(得分:3)

$text="abc1234567890";

// truncate to 4 chars

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

这避免了将4个char字符串截断为10个字符的问题..(即源小于所需的字符串)