目前我正在使用
substr("String name", 0, 10).'...'
用...替换任何超过 10 个的单词
但是我意识到,即使我将它用在像“邦德”这样简单的词上
substr("Bond", 0, 10).'...';
“...”仍然会出现,我怎样才能让它只有超过字数限制的单词才能有“...”
$string = "bond";
if(strlen($string) > 10)
$string = substr($string, 0, 10) . '...';
这样的事情可能会有所帮助:
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;
}
您可以使用快速正则表达式:
$str = 'Hello world what is up';
preg_replace('/(.{10}).+/', '$1...', $str); //=> "Hello worl..."
如果没有至少 10 个字符,那么它不会做任何事情,因为捕获组将不匹配。
要查看字符串是否超过特定长度,请执行以下操作:
$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;
}