42 или Длина Строки
...точней, понадобилась не длина строки, конечно, а количество букв в ней - в применении к набору фраз, который было проще проанализировать скриптом, чем как-то ещё. "Однофразовая" версия скрипта, в которой строка текста тырсится в форму, лежит вот тут, по правде говоря, почти автогенерация кода.
Для общности считает всё в Юникоде. Название скрипта, надеюсь, очевидно, если нет, прочтите вот это:
Полный исходник шыдевра на момент опубликования:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <title>STRLEN (RU)</title> </head> <body> <?php function trimall($string) { return trim(preg_replace("/\s+/"," ",$string)); } function magic ($path) { @ini_set('magic_quotes_runtime', '0'); @ini_set('magic_quotes_sybase', '0'); if (@get_magic_quotes_gpc()=='1') $path=stripslashes($path); return $path; } function get_word_form ($n,$word,$o1,$o2,$o5) { if ($n%100>10 and $n%100<20 or $n%10==0 or $n%10>4) $word.=$o5; else if ($n%10>1 and $n%10<5) $word.=$o2; else $word.=$o1; return $word; } function checkboxed ($t) { if (empty($t)) $t=0; $t = intval(abs(round($t))); if ($t<0) $t=0; if ($t>1) $t=1; return $t; } $params = array ('text','trim','lettersonly','action'); while (list($num,$var) = each($params)) { if (!empty($_POST[$var])) $$var = htmlspecialchars(magic($_POST[$var])); else $$var = ''; } $trim = checkboxed ($trim); $lettersonly = checkboxed ($lettersonly); $text=str_replace("[\r\n]","",$text); echo ' <form name="f1" method="post" action="'.$_SERVER['PHP_SELF'].'"> <table align="center" border="0" cellpadding="4" cellspacing="0" width="50%"> <caption>Количество символов или букв в строке</caption> <tr> <td>Текст:</td> <td> <input type="text" name="text" maxlength="128" size="64" value="'.$text.'"> </td> </tr> <tr> <td>Настройки:</td> <td>'; $checkbox_values = array ('trim'=>'Удалить лишние разделители','lettersonly'=>'Подсчитать только число букв'); foreach ($checkbox_values as $key=>$value) { echo '<input type="checkbox" name="'.$key.'" value="1"'.($$key==1?' checked':'').'>'.$value.'<br>'; } echo '</td> </tr> <tr> <td> </td> <td> <input type="submit" name="action" value="Вычислить"> <a href="'.$_SERVER['PHP_SELF'].'">Очистить</a> </td> </tr> </table> </form>'; if (!empty($action)) { if ($trim) $text = trimall($text); $len = mb_strlen ($text,'UTF-8'); if ($lettersonly) { $k=0; for ($i=0; $i<$len; $i++) { $c = mb_substr($text,$i,1,'UTF-8'); if (mb_strpos( "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюяABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ,$c,0,'UTF-8')!==false) $k++; } $len=$k; } echo '<table align="center" border="0" cellpadding="4" cellspacing="0" width="50%"><tr><td>'; echo '<font color="red">[</font>'.($trim==1?$text:preg_replace("/\s/","×",$text)).'<font color="red">]</font><br>'; echo $len.' '.get_word_form ($len,'символ','','а','ов'); echo '</td></tr></table>'; } ?> </body></html>
Между прочим, в 42 года В.И. Ульянов (Ленин) был всего лишь отчаявшимся эмигрантом, грузин Чхартишвили едва опубликовал первую в жизни бредятинку под псевдонимом Акунин, а коммунист Чикатило едва убил первую жертву. Всё впереди, дерзайте :)
В "дьявольском файле" - сплошные 42
17.02.2014, 21:47 [10255 просмотров]