Вывод определенного количества слов PHP

kennedy

Новичок
Вывод определенного количества слов PHP

Нужно укоротить текст до определенного количества слов,
Если укоротить до символов это будет выглядит примерно так
if (strlen($mydesc[$myvaluedesc]) > 240) {$mydesc[$myvaluedesc] = substr ($mydesc[$myvaluedesc], 0, 240)."...";}
По поводу слов...
Единственное что мне приходить на ум это разбит текст в массив по " " а потом вывести определенное количество элементов массива
Но если текст слишком длинный это будет занимать много времени и ресурсов. Вопрос наверно сильно глупый пхп я учил очень давно.
Помогите как то упрости подкинуть какую то идею как и при помощи какой функции это можно реализовать.
А еще лучше перепишете исходный код который я дал что бы все работало. Если не трудно. Чувствую решения очень простое. Спасибо
 

kennedy

Новичок
Спасибо:) ну дальше совсем наглость но...
if (str_word_count($mydesc[$myvaluedesc]) > 30) {$mydesc[$myvaluedesc] = str_word_count($mydesc[$myvaluedesc], '0..30')}
вот так должно выглядит или где то ошибка?
 

HraKK

Мудак
Команда форума
ну если ты хочешь до 30 слов то да но 30 слов это не 240 символов. Там можно и по символам если немного подумать сделать.
 

kennedy

Новичок
а все таки где то ошибка.
у меня вместо первых 30 слов пишет количество слов.
что то я не могу понять. в документации указано что такая конструкция будет выводить первые 30 слов
str_word_count($mydesc[$myvaluedesc], '0..30')
 

HraKK

Мудак
Команда форума
в документации указано что такая конструкция будет выводить первые 30 слов
где сказано?
Specify the return value of this function. The current supported values are:

* 0 - returns the number of words found
* 1 - returns an array containing all the words found inside the string
* 2 - returns an associative array, where the key is the numeric position of the word inside the string and the value is the actual word itself
join( ' ', ...);
 

kennedy

Новичок
вот в этом уникальном скрипте
<?php
$str = "Hello fri3nd, you're
looking good today!
look1234ing";
print_r(str_word_count($str, 1, '0..3'));
?>
или я снова не так понял. Напишите пожалуйста как нужно.
или же нужно писать.
str_word_count($mydesc[$myvaluedesc], 1, '0..30')
но так у меня выводит массив.
Эхъ...
 

findnext

Новичок
split, count, join, array_slice этих функции вполне достаточно чтобы организовать то что ты хочешь
 

kennedy

Новичок
а может кто то может помочь готовым решением? Программист с меня никудышный. Все что когда то учил уже давно забыл. А то я сума сойду пока со всем разберусь.
 

HraKK

Мудак
Команда форума
тут не помогают готовыми решениями.
Вот что тебе надо:
* 2 - returns an associative array, where the key is the numeric position of the word inside the string and the value is the actual word itself
foreach
if
вcе.
 

kennedy

Новичок
Вот все равно я не пойму.
Пишу
if (str_word_count($mydesc[$myvaluedesc]) > 30) {$mydesc[$myvaluedesc] = implode(" ", str_word_count($mydesc[$myvaluedesc], 2, '0..30'))."...";}

А выводятся не первые 30 слов а все слова. Бррррр

-~{}~ 09.03.09 17:58:

Люди, помогите, а? ну действительно нужно воплотить в реальность. А программирование я совсем не знаю. Вот такая дилемма.
 

kennedy

Новичок
выводить первых 30 слов. но я пробовал и без него писать.
if (str_word_count($mydesc[$myvaluedesc]) > 30) {
$abcdesc = str_word_count($mydesc[$myvaluedesc], 2);
for($i=0;$i<40;$i++){$mydesc2[$myvaluedesc] = $mydesc2[$myvaluedesc]." ".$abcdesc[$i];}
$mydesc[$myvaluedesc] = $mydesc2[$myvaluedesc]."...";
}
все равно не получается. выводить 4-6 слов непонятно вообще что за бред)
Эта функция всемирный заговор против программистов новичков которая направлена на то что бы свести их с ума? я прав?
 

Beavis

Banned
kennedy
заговор против программистов - это вот такие имена переменных, как у тебя
 

kennedy

Новичок
а я и не спорю. но код не такой уж и большой. там все понятно:) кто то может помочь реализовать эту безумную затею. Или это сделать не реально?:0
 

findnext

Новичок
kennedy
в программировании нет ничего нереального. Нужно правильно мануал учиться читать, Hrakk 2 раза приводил цитаты, а ты всё на своём стоишь

-~{}~ 09.03.09 19:30:

http://ru.php.net/str_word_count

-~{}~ 09.03.09 19:31:

вот на русском
 

Beavis

Banned
kennedy
Это сделать реально, причем за пол минуты.. Непонятно, почему ты ещё этого не сделал... Если не хочешь сам делать - так и скажи, закроем тему)
 

kennedy

Новичок
ну разве я виноват что с программированием у меня плохо. если бы я мог реализовать я бы не мучал вас глупыми допросами. Мануал я читал. определить количество слов просто а вот как вывести первых 30 это уже проблема

-~{}~ 09.03.09 19:55:

<?php
$mydesc[$myvaluedesc] = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40";
if (str_word_count($mydesc[$myvaluedesc]) > 30) {
echo $mydesc[$myvaluedesc];
}
?>
совсем ничего не выводит. Значит скрипт считает что в переменной меньше 30 слов. потому у меня ничего не получается.
 

Beavis

Banned
Автор оригинала: kennedy
Значит скрипт считает что в переменной меньше 30 слов.
а ты посмотрел, сколько слов насчитал скрипт, или сразу на форум жаловаться?
и включи вывод ошибок в начале скрипта:
PHP:
ini_set("display_errors", "1");
error_reporting(E_ALL);
-~{}~ 09.03.09 20:12:

кстати, я в твоей строке тоже, как и скрипт, не вижу ни одного слова..
 

kennedy

Новичок
забил на вашу функцию и реализовал по своему
<?php
$mydesc[$myvaluedesc] = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40";
$abc = explode(" ", $mydesc[$myvaluedesc]);
if (count($abc) > 30) {
for($i=0; $i<30; $i++){$mydesc2 = $mydesc2.$abc[$i]." ";}
$mydesc[$myvaluedesc] = $mydesc2."...";
}
echo $mydesc[$myvaluedesc];
?>
но, мне все таки интересно это вы так прикалываетесь, или действительно через нее можно реализовать данный скрипт?
 
Сверху