PHP: правильное усечение строк с помощью ".."

В настоящее время метод, который я использую для усечения строк: echo substr($message, 0, 30)."..";

Как показать точки только в том случае, если строка была усечена?

Ответ 1

Просто проверьте длину, чтобы увидеть, содержит ли она более 30 символов:

if (strlen($message) > 30)
{
    echo substr($message, 0, 30)."..";
}
else
{
    echo $message;
}

Типографическая nitpick во мне имеет это, чтобы добавить: правильный символ для использования - это многоточие, которое содержит этот символ , три точки ... или его объект HTML ….

Ответ 2

Просто проверьте длину исходной строки, чтобы увидеть, нужно ли ее усекать. Если длина больше 30, обрезайте строку и добавьте точки в конец:

if (strlen($message) > 30) {
 echo substr($message, 0, 30)."..";
} else {
 echo $message;
}

Ответ 3

Следует отметить, что функция strlen() не учитывает символы, она подсчитывает байты. Если вы используете кодировку UTF-8, вы можете получить 1 символ, который считается 4 байтами. Правильный способ сделать это будет примерно таким:

echo mb_strlen($message) > 30 ? mb_substr($message, 0, 30) . "..." : $message;

Ответ 4

if (strlen($message) > 30) {
  echo substr($message, 0, 30) . "..";
} else {
  echo $message;
}

Ответ 5

Вы можете сделать:

echo strlen($message) > 30 ? substr($message, 0, 30) . '..' : $mssage;

В принципе, это похоже (но короче):

if (strlen($message) > 30) {
    echo substr($message, 0, 30) . "..";
} else {
    echo $message;
}

Ответ 6

Добавить условие strlen()?