2015-11-11 1 views
0

Я создаю систему для создания динамических описаний для метатег. Он занимает сообщение на странице и передает его в функцию, которая вычеркивает все ненужное, а затем берет strlen, видя его большим и создает список слов. Теперь мне нужно удалить нужное количество слов, чтобы привести строку до 155 символов или 152, и я добавлю многоточие.Возьмите произвольную строку и сделайте ее 155 символов, заканчивающихся на ближайшее слово

Пример Строка (Ни одно из этого не фактический код его предназначен для Sudo кода)

$string = "Hello lovely Solia Avatar Community, I have a little problem and I need your help. I used to have Paint Tool SAI but my laptop ate a lot of my files, one of them being SAI. Now I am trying to get it back but I lost the website I got it from. I keep finding a website to buy it from for about $70.";

echo strlen($string); = 296

if(strlen($string) > 155) { 
    // Get word amount 
    $words = preg_split('/\s+/', ltrim($string), 155 + 1); 
} 

Теперь у меня есть слова в массиве и Мне нужно взять этот массив и довести его до полной скорости 155 и остановиться на ближайшем слове, а не сломать его неловко. Возможно, я пытаюсь решить эту проблему неправильно, и мне нужно использовать другой набор функций.

+0

Возможный дубликат [Как Обрезать строку в PHP со словом ближайшего к определенному количеству символов?] (Http://stackoverflow.com/questions/79960/how-to-truncate-a- string-in-php-to-the-word-close-to-an-some-number-of-chara) –

+0

Спасибо, Брет. Я надеюсь, что есть другое решение, не делая цикл for для подсчета символов. Это кажется слишком упрощенным. – Iscariot

+0

Я протестировал этот принятый ответ, и он вернется выше желаемой длины. – Iscariot

ответ

0

Основная идея состоит в том, чтобы найти положение первого пространства после первых 155 символов. Это можно сделать с помощью strpos($string, ' ', 155). Затем используйте substr($string, 0, $endat155) для извлечения части строки от начала до этой позиции.

$endat155 = strpos($string, ' ', 155); 
$firstWords = substr($string, 0, $endat155); 
echo $firstWords;