0

目前我正在使用

substr("String name", 0, 10).'...'

用...替换任何超过 10 个的单词

但是我意识到,即使我将它用在像“邦德”这样简单的词上

substr("Bond", 0, 10).'...';

“...”仍然会出现,我怎样才能让它只有超过字数限制的单词才能有“...”

4

4 回答 4

2
$string = "bond";

if(strlen($string) > 10)
    $string = substr($string, 0, 10) . '...';
于 2013-07-26T01:46:53.527 回答
1

这样的事情可能会有所帮助:

function str_curtail($str, $length = 35, $append = '...')
{
    // String short enough already ?
    if (strlen($str) <= $length) {
        return $str;
    }
    $str = substr($str, 0, $length);
    for ($i=$length - 1; !ctype_space($str{$i}); --$i); // No body intentionally
    $str = rtrim(substr($str, 0, $i));
    return $str . $append;
}
于 2013-07-26T01:49:10.973 回答
1

您可以使用快速正则表达式:

$str = 'Hello world what is up';
preg_replace('/(.{10}).+/', '$1...', $str); //=> "Hello worl..."

如果没有至少 10 个字符,那么它不会做任何事情,因为捕获组将不匹配。

于 2013-07-26T01:49:34.007 回答
1

要查看字符串是否超过特定长度,请执行以下操作:

$string = "Applepie is delicious.";
$maxlength = 10;

// If the string length is bigger than $maxlength
if(strlen($string) > $maxlength)
{
    echo substr($string, 0, $maxlength).'...';
}

// If it's shorter than $maxlength
else
{
    echo $string;
}
于 2013-07-26T01:48:30.720 回答