Возможный дубликат:
Сократить строку в PHP (только для полных слов)
Как получить первые х символов из строки, не отрезая последнее слово?
Много похоже на этот вопрос: как ограничить длину тега заголовка с помощью PHP
… где ответ подобен:
[title] ?php echo substr( $mytitle, 0, 70 ); [/title]
… но есть ли способ сделать это, когда решение не сокращает слова пополам? Так что, если слово частично превышает количество символов в лимите, решение будет удалять полное слово, а не ограничивать его количеством символов?
Это может привести к вам 95%, но это не идеально …
$mytitle = 'How to Limit the Length of the Title Tag using PHP'; $arr = explode(' ',$mytitle); $string = ''; foreach($arr as $word) { if(strlen($string) > 69) break; $string .= ' ' . $word; } echo $string;
Следующее, вероятно, одно из самых простых решений для реализации, но оно не является наиболее эффективным.
Взгляните на wordwrap
который разбивает вашу строку на несколько строк без разрыва слов. Затем вы можете разбить результирующую строку на линейные сдвиги, используя, например. explode("\n", $var, 2)
чтобы получить первую строку, которая будет вашим названием.
Несколько интересное, если не оптимальное решение (непроверено, но вы должны получить идею):
$wrapped = wordwrap($mytitle, 70, "ENDOFTITLE") $truncated = substr($wrapped, 0, strpos($wrapped, "ENDOFTITLE"));
Тем не менее, ответы на дублирующие вопросы дают лучшие решения.