Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Как лучше разбить текст?
Новая тема
Ответить
цитата
28/10/08 в 10:42
TRUE_AND_FALSE
В обчем имеем текст в переменной $text
нужно этот текст разбить на массивы по словам или словосочитаниям. Желательно рандомировать! То есть пишем в массив одно слово из текста, далее пишем 2-3 слова из текста. Подумывал вырезать символы между побелами с помощью preg_match_all . Подскажите как лучше прописать, всем рейтинг!
цитата
28/10/08 в 11:22
dDan
Ты же на заказ программируешь стыдно такое спрашивать.
цитата
28/10/08 в 11:51
TRUE_AND_FALSE
dDan писал:
Ты же на заказ программируешь стыдно такое спрашивать.
Я мнение спрашиваю, опытом поделиться
цитата
28/10/08 в 12:02
Corex
Интересно! Вот такое мнение:
Код:
$text = "PHP is a scripting language, originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in standalone graphical applications.";
$words = explode(' ', $text);
for($i=0; $i<count($words); $str='')
{
for($j=0; $j<mt_rand(1,4); $j++) @$str .= ' ' . $words[$i++];
$result[] = $str;
}
print_r($result);
Для финально-рабочей версии надо чуток добавить рутины с проверками и избавиться от знаков препинания, если требуется, и т.д.
цитата
28/10/08 в 12:07
TRUE_AND_FALSE
Код:
$massiv = explode(" ",$text);
Или вот так тупо простенько. Что еще посоветуете?
цитата
28/10/08 в 12:16
TRUE_AND_FALSE
Corex:
красиво, четко
Код:
$massiv = explode(' ', $text);
for ($i=0; $i<count($massiv);$i++)
{
$massiv[$i] = $massiv[rand(1,count($massiv))];
}
print_r($massiv);
Вытаскиваем из текста рандомно слова в массив. Можно отрегулировать сколько брать слов из текста.
цитата
28/10/08 в 12:24
Corex
Если надо рэндомно, то в любом случае придётся делать где-то рэндом дополнительно, так что explode тут не так уж плох.
В моём вариант mt_rand(1,4) - это кол-во слов (от 1 до 4). Если нужно потом перемешать массив, то делай shuffle($result).
В твоём варианте массив состоит только из однословных ячеек, словосочетаний нет, ну и цикл не нужен, можно вот так упростить:
$massiv = shuffle(explode(' ', $text));
цитата
28/10/08 в 12:42
TRUE_AND_FALSE
Corex:
верно, но акцент сделан на
Цитата:
Можно отрегулировать сколько брать слов из текста.
цитата
28/10/08 в 12:57
Corex
$words = array_slice(explode(' ', $text), 0, 20); - берёт первые 20 слов!
цитата
28/10/08 в 15:49
Lamagro
dDan писал:
Ты же на заказ программируешь стыдно такое спрашивать.
иногда кстати действительно интересно посмотреть как можно еще реализовать тот или иной код...
другое дело что это может быть показатель величины опыта
Код:
$Alltxtfile = file_get_contents($filename);
$ArrayTxt = explode(" ",$Alltxtfile);
$start = 0;
foreach($ArrayTxt as $key => $val)
{
$end = mt_rand(0,3);
if($start<count($ArrayTxt))
{
$FinalText[$start] = implode(" ",array_slice ($ArrayTxt, $start ,$end));
$start = $start+$end;
}
}
Новая тема
Ответить
Эта страница в полной версии