Forum Webscript.Ru
Программирование => PHP => Тема начата: Solid от 08 Февраля 2002, 21:58:29
-
Вот некак не могу решить одну задачу, т.е. решил одним способом, но он меня вообще не устраивает.
Короче вот что нужно, есть какая то пременная в которой много всяких слов типа например обозначим её так:
$string = "здесь что то написанно, и есть ооооооооооооооочччччччеееееееенннньььььь большое слово"
Короче нужно проверкой, если в этом самом стринге одно из слов больше например 20, то извени федя борода типа пишит
echo "Обломись!";
А если всё прошло, то пишит
echo "всё ок Федя, работает расприкласно!";
Сорри не могу показать то что я сделал, стёр уже, а делал я через аррай, рэплайс и eregi =)
Пожалуйста помогите, нужно ..
-
wordwrap функция думаю тебе поможет.
$text = "A very long woooooooooooord.";
$newtext = wordwrap( $text, 8, "\\n", 1);
echo "$newtext\\n";
-
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;
-
AlieN слабо еще сложнее, чем Stek написал? =)
-
Не я это писал :)
Зато сам проверял работает :)
-
Не люди, хоть это и мне тоже пригодилось, я совсем не то имел ввиду.
Короче нужно так сделать, если в массиве слов есть слово больше привышаемой нормы (букв всмысле больше), то делаем echo "хехе";
else
echo "хаха";
Вот так.
-
блин так бы сразу и сказал:
$words=split(" ",$message)
for($i=0;$i{
if(strlen($wodrs[$i])>50){$words[$i]="хе-хе";}
}
$message=join(" ",$words);
50 в данном случае - макс. кол-во букв
-
=)
Ты хоть пробовал работает это или нет?!
Короче это, это не то всёравно! Это я и сам уже написал ;)
Это же подсчёт сколько слов в предложении скажем так.
А мне нужно сделать так, что бы если в предложении есть какое то слово больше ограниценного числа, то выводится срабатывает TRUE, если нет, то срабатывает FALSE, вот так!
-
Пробовал - работает :)
-
Да не так просто ошибка одна ";" не стоит, и ещё ++i .. что то мне не понравилось ;)
Это, а как я сказал, не знаешь как сделать?
-
А мне нужно сделать так, что бы если в предложении есть какое то слово больше ограниценного числа, то выводится срабатывает 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\';
-
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 ":(";
}
?>
-
предлагаю заменить на вот такой вариант :)
// исходная строка
$str = \'Вот так я имел ввиду ..\';
// максимально допустимый размер слова
$maxsize = 4;
// разделитель между словами
$delim = \'\\ \';
/* строка на эрег, одиночные кавычки и конкатенация - существенны */
$ereg = \'([^\'.$delim.\']{\'.($maxsize+1).\',})+\';
/* если в строке есть такое слово, то БОРОДА */
if ( eregi($ereg, $str) ) {
echo "";
} else {/* иначе - мило улыбаемся */
echo "";
}
если нужен список "запрещенных" слов или их количество, то просто добавить в вызове eregi третий параметр, в который они и будут складываться :)
-
$er=1;
$words=split(" ",$message)
for($i=0;$i{
if(strlen($wodrs[$i])>50){$er=1;}
}
return $er;
PS объясняй пожалуйста сразу внятно и доступно
-
AlieN
Да с объяснялкой у меня бываю маленькие затруднения, ну ничего, думаю скоро исправлюсь, буду больше книг читать, а то у компа всё у компа ...