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()
?