Частый гость
Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012
Помог: 0 раз(а)
|
Функция возвращает строку заданной длины из случайных цифр, букв (uc и lc) и символов.
Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
generate_string(500); # На выходе будет что-то типа M}9o5o6XS2V}REFd7WFZ7+58*@c%4@wqKHyKX6/j~W_3Hei,zP170k7rQ<8~u/6EP{@H7+$r_4_K2x,a+^x?fcm"4P_aN9zYKn47pj7B)5vg9kl_q9SpJP~!_PeC*L^!w67R!_ZC95WQ96p-qc7#S4z"XS<b6Z5>3298r9QX57^t)X_&+:01nGpJUZwK1I2-pM<9405SXWzr1%$3KxQoB^JWq0MkL}#2*$O%Nj5>y@9(Mp11<b"3_"@4mIWN9mF+^>vOyCKB4UZ6K:Q5Xh3qdP0-DMVI24K5faZ^NA#D5CPf7GG0>+d-}?vMF?}e{syfnqx?/-gn&O{c^OVD^pNT3eI5:e1k;_ox+5;rzhy~=A1z)!tv(bVJ-Ph;,8wYl;vX411"k@9}h"B154VU.i!dgxa9QsZ0HEff,CWpJ?8}*>7WB$_o5+~Wv2zFfQ37j64n7,/dK.9H<5<_047L97L41wR6F,jj+k3i-4M+1N77)vPc4Jr2bo8C
Иногда (часто, очень часто) строка прерывается, не доходя до нужной длины. Почему - я не знаю, уже всю голову сломал. И в код страницы смотрел, там тоже нету. Бывает и такое, что она сокращается в 2 раза и больше.
Вот пример:
Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
generate_string(500); # 493 символа F?x)0?phRa17ZMIE2Km9mc5rF5M8T)D-D=0"(I=93!e&35l~j&F7H^(n{?)*1{f.:)T1.QliQn6?U7AbDW!r32mAL50333:RxD9&xO,w11#/"FePl?}5tVp#YCtQ10fNCcOr70G0tSr~0q%;Q5x7wl}a(2>m6w3A6;5d8)yq;%yC"4Xr6S=bO4Fe~G@)-9!L>)x,93S7OE74#{{{xrG%V2?E*sZlgW&wu32N.#CaKP7mXV1<2zT_=>8tyONT$M5A.1/P261;gAAPCR2:16b0d7)Xf>AE3eE?F70Y_x#(eu6=216VIz*NuO0z2a1m;&tQz5?8c3a.T:57//:pz/i#IP0yeu%(0:37.e2NVr49I(S482-jLUxbqX!"@!KbE6$08a2Y{X.*x59gr:1zJB63LXaH3943V{cM^9DY/52f!6Zd)2e7MsriiP6F7W3!7V-8?{QL31Am:3FloV.k{i4K<$_+Aqof192%9(qJ50,8aC
Вот сама функция:
PHP:
скопировать код в буфер обмена
function generate_string ($length) { return false; # Если длина не указана } $i = 0; $string = ''; while ($i++ < $length) { # Каждый цикл присоединяет полученный символ к строке switch (rand (1,4)) { # Определяет, какой тип символов будет сгенерирован case 1: break; case 2: $array = range ('A', 'Z'); $string .= $array[$rand_keys]; break; case 3: $array = range ('a', 'z'); $string .= $array[$rand_keys]; break; case 4: $array = array ('~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', ',', '.', '/', '{', '}', '"', ':', ';', '<', '>', '?'); $string .= $array[$rand_keys]; break; } } return $string; unset($string, $array, $rand_keys); } $string = generate_string(500); $str_len = mb_strlen($string); # В целях отладки считаю, сколько символов в строке echo $string . " has $str_len characters" . "\r\n";
(Добавление)
Сократил массив символов до
CODE ( htmlphp):
скопировать код в буфер обмена
'~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '{', '}'
и всё теперь работает нормально) но всё же интересно, что именно было не так..(Отредактировано автором: 30 Мая, 2013 - 13:44:53)
|