在我的php文件中,我正在使用
$html .= $prev->link_name;
显示商家信息的名称。不幸的是,一些列表有很多字符,所以我想在15个字符之后剪切它们并添加三个点" ..."在商品名称的末尾。
我知道我必须添加类似的内容:
$string = (strlen($string) > 15) ? substr($string,0,15).'...' : $string;
但我不确切知道如何使用它:
$html .= $prev->link_name;
有什么建议吗?
答案 0 :(得分:4)
如有疑问,请将其分开:
$string = $prev->link_name;
if (mb_strlen($string) > 15)
$string = mb_substr($string, 0, 15) . '...';
$html .= $string;
或者你可以在一行中完成:
$html .= (mb_strlen($prev->link_name) > 15) ? mb_substr($prev->link_name, 0, 15) . '...': $prev->link_name;
但是如果你很难阅读这样的一行,那么花几行来提高它的可读性会更好。不要感到羞耻:单行版本是一个非常长的版本,很难理解所有这些不同的表达方式。在这种情况下,我会自己选择多行版本。
-edit -
根据评论中的请求更新为使用multibyte string functions。
答案 1 :(得分:4)
$html .= (strlen($prev->link_name) > 15) ? substr($prev->link_name,0,15).'...' : $prev->link_name;
答案 2 :(得分:0)
在检查字符长度后,您需要检查包含名称的字符串并使用。例如,如果我们有一些字符串:
//Some string
$string = 'Yuriy Ivanovich '; //Replace with $string = $prev->link_name;
/*
The responses above, we would get an answer next
string 'Yuriy Iv...' (length=18)
Not correct! Change it!
*/
//Remove extra spaces
$string = preg_replace ('/\s+/', ' ', $string) ;
//Check if string not empty
if(!empty($string)){
if(mb_strlen($string) > 15)
$string = mb_substr($string, 0, 15) . '...';
}
$html .= $string;
var_dump($html);
结果:
string 'Yuriy Ivanovich...' (length=18)