Forum Webscript.Ru

Программирование => PHP => Тема начата: Solid от 08 Февраля 2002, 21:58:29

Название: Максимальная длинна слова
Отправлено: Solid от 08 Февраля 2002, 21:58:29
Вот некак не могу решить одну задачу, т.е. решил одним способом, но он меня вообще не устраивает.

Короче вот что нужно, есть какая то пременная в которой много всяких слов типа например обозначим её так:

$string = "здесь что то написанно, и есть ооооооооооооооочччччччеееееееенннньььььь большое слово"

Короче нужно проверкой, если в этом самом стринге одно из слов больше например 20, то извени федя борода типа пишит

echo "Обломись!";

А если всё прошло, то пишит

echo "всё ок Федя, работает расприкласно!";

Сорри не могу показать то что я сделал, стёр уже, а делал я через аррай, рэплайс и eregi =)

Пожалуйста помогите, нужно ..
Название: Максимальная длинна слова
Отправлено: Stek от 08 Февраля 2002, 22:08:28
wordwrap функция думаю тебе поможет.

$text = "A very long woooooooooooord.";
$newtext = wordwrap( $text, 8, "\\n", 1);

echo "$newtext\\n";
Название: Максимальная длинна слова
Отправлено: AlieN от 09 Февраля 2002, 14:03:25
Solid
Если ты хочешь чтобы дробилось слово где  не идёт много много одних и тех же букв как в примере стека то вот пример
PS : чтесно выдрал из одной гостевой книги(manlix.ru)
$f = $mlwim;
$e = explode(" ",$message);
for ($a = 0; $a < sizeof($e); $a++)
{
$o = strlen($e[$a]);
$b = 0;
$q = $o;
while($q > 0)
{
$s[$b] = substr ($e[$a], $f*$b, $f);
$q = $q - $f;
$b++;
}
for ($c=0;$c < sizeof($s);$c++)
$h[] = $s[$c];
}
for ($d = 0; $d < sizeof($h); $d++)
$r .= $h[$d]." ";
$message = $r;
Название: Максимальная длинна слова
Отправлено: AliMamed от 09 Февраля 2002, 16:05:26
AlieN слабо еще сложнее, чем Stek написал? =)
Название: Максимальная длинна слова
Отправлено: AlieN от 09 Февраля 2002, 17:03:34
Не я это писал :)
Зато сам проверял работает :)
Название: Максимальная длинна слова
Отправлено: Solid от 10 Февраля 2002, 00:24:12
Не люди, хоть это и мне тоже пригодилось, я совсем не то имел ввиду.

Короче нужно так сделать, если в массиве слов есть слово больше привышаемой нормы (букв всмысле больше), то делаем echo "хехе";
else
echo "хаха";

Вот так.
Название: Максимальная длинна слова
Отправлено: AlieN от 10 Февраля 2002, 00:56:14
блин так бы сразу и сказал:
$words=split(" ",$message)
for($i=0;$i{
if(strlen($wodrs[$i])>50){$words[$i]="хе-хе";}
}
$message=join(" ",$words);

50 в данном случае - макс. кол-во букв
Название: Максимальная длинна слова
Отправлено: Solid от 10 Февраля 2002, 01:42:42
=)

Ты хоть пробовал работает это или нет?!

Короче это, это не то всёравно! Это я и сам уже написал ;)

Это же подсчёт сколько слов в предложении скажем так.

А мне нужно сделать так, что бы если в предложении есть какое то слово больше ограниценного числа, то выводится срабатывает TRUE, если нет, то срабатывает FALSE, вот так!
Название: Максимальная длинна слова
Отправлено: AlieN от 10 Февраля 2002, 10:21:46
Пробовал - работает :)
Название: Максимальная длинна слова
Отправлено: Solid от 10 Февраля 2002, 14:39:09
Да не так просто ошибка одна ";" не стоит, и ещё ++i .. что то мне не понравилось ;)

Это, а как я сказал, не знаешь как сделать?
Название: Максимальная длинна слова
Отправлено: от 24 Февраля 2002, 05:43:04
Цитировать
А мне нужно сделать так, что бы если в предложении есть какое то слово больше ограниценного числа, то выводится срабатывает TRUE, если нет, то срабатывает FALSE, вот так!



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

// исходная строка
$str = \'kuka\';

// максимально допустимый размер слова
$maxsize = 3;

// разделитель между словами
$delim = \'\\ \';

/* строка на эрег, одиночные кавычки и конкатенация - существенны */
$ereg = \'^([\'.$delim.\']*)([^\'.$delim.\']{1,\'.$maxsize.\'}[\'.$delim.\']+)*([\'.$delim.\']*)$\';

if ( strlen($str) > $maxsize && (!eregi($ereg, $str)) )
           $res = \'wrong\';
else
           $res = \'correct\';
Название: Максимальная длинна слова
Отправлено: Solid от 24 Февраля 2002, 12:56:13
Felenka: Это всёравно немного не то что я имел ввиду...

Ну ладно, я уже сам написал, вот код:


/*
Script by Solid
Web: [url]http://coding.dyn.ee/[/url]
E-mail: [email]solid@email.ee[/email]
IRC: irc.ircworld.org -> #rus
*/

// исходная строка
$str = \'Вот так я имел ввиду ..\';

// максимально допустимый размер слова
$maxsize = 4;

// разделитель между словами
$word = explode(" ", $str);

// Пересчитать все слова, если какое то из них больше $maxsize то в массив записываем 0, если меньше то 1
for($i = 0; $i <= count($word); $i++) {
GLOBAL $len;
if(strlen($word[$i]) > $maxsize) {
$len[] = "0";
} else {
$len[] = "1";
}
}

// Если в массиве есть 1 и нету 0 то "УРА", если в массиве есть 0 то "БОРОДА"
if(in_array("1", $len) xor in_array("0", $len)) {
echo ":)";
} else {
echo ":(";
}
?>
Название: Максимальная длинна слова
Отправлено: от 26 Февраля 2002, 02:38:24
предлагаю заменить на вот такой вариант :)

// исходная строка
$str = \'Вот так я имел ввиду ..\';

// максимально допустимый размер слова
$maxsize = 4;

// разделитель между словами
$delim = \'\\ \';

/* строка на эрег, одиночные кавычки и конкатенация - существенны */
$ereg = \'([^\'.$delim.\']{\'.($maxsize+1).\',})+\';

/* если в строке есть такое слово, то БОРОДА */
if ( eregi($ereg, $str) ) {
    echo """";
} else {/* иначе - мило улыбаемся */
     echo """";
}


если нужен список "запрещенных" слов или их количество, то просто добавить в вызове eregi третий параметр, в который они и будут складываться :)
Название: Максимальная длинна слова
Отправлено: AlieN от 26 Февраля 2002, 11:40:56
$er=1;
$words=split(" ",$message)
for($i=0;$i{
if(strlen($wodrs[$i])>50){$er=1;}
}
return $er;

PS объясняй пожалуйста сразу внятно и доступно
Название: Максимальная длинна слова
Отправлено: Solid от 26 Февраля 2002, 16:13:30
AlieN
Да с объяснялкой у меня бываю маленькие затруднения, ну ничего, думаю скоро исправлюсь, буду больше книг читать, а то у компа всё у компа ...