PHP:用".."正确截断字符串

Kar*_*rem 14 php

目前,我用来截断字符串的方法是: echo substr($message, 0, 30)."..";

如何仅在字符串被截断的情况下显示点?

Bol*_*ock 18

只需检查长度,看它是否超过30个字符:

if (strlen($message) > 30)
{
    echo substr($message, 0, 30)."..";
}
else
{
    echo $message;
}
Run Code Online (Sandbox Code Playgroud)

我的印刷挑剔有这样的补充:使用的正确字符是包含此字符,三个...或其HTML实体的省略号….

  • (特别是@fabrik和投票给他的人:)在HTML中使用命名实体是不推荐的 - 不要这样做,因为(现代!)浏览器在与XHTML一起使用时会窒息.更好的解决方案是始终直接使用角色,以及正确的编码,即UTF-8或类似.但是提到正确的符号仍然是+1. (2认同)

bea*_*man 6

需要注意的是,strlen()函数不计算字符数,而是计算字节数。如果您使用 UTF-8 编码,则最终可能会出现 1 个字符(最多 4 个字节)。正确的方法是这样的:

echo mb_strlen($message) > 30 ? mb_substr($message, 0, 30) . "..." : $message;
Run Code Online (Sandbox Code Playgroud)


GSt*_*Sto 5

只需检查原始字符串的长度,看它是否需要截断.如果长度超过30,则截断字符串并在末尾添加点:

if (strlen($message) > 30) {
 echo substr($message, 0, 30)."..";
} else {
 echo $message;
}
Run Code Online (Sandbox Code Playgroud)


spr*_*ain 5

if (strlen($message) > 30) {
  echo substr($message, 0, 30) . "..";
} else {
  echo $message;
}
Run Code Online (Sandbox Code Playgroud)