如何使substr()仅适用于超过单词限制的单词?

时间:2013-07-26 01:44:13

标签: php substr

目前我正在使用

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

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

然而我意识到即使我在像“邦德”这样简单的单词上使用它

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

“...”仍然会出现,我怎么能说只有超过字数限制的字才能有“......”

4 个答案:

答案 0 :(得分:2)

$string = "bond";

if(strlen($string) > 10)
    $string = substr($string, 0, 10) . '...';

答案 1 :(得分: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;
}

答案 2 :(得分: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;
}

答案 3 :(得分:1)

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

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

如果不存在至少10个字符,则由于捕获组不匹配,因此不会执行任何操作。