Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
<?php /************************************************************* * Генератор ников * http://BrokenBrake.biz/ *************************************************************/ mb_internal_encoding('UTF-8'); $q = $_GET['q']; $lang = $_GET['lang']; $num = $_GET['num']; // prefixGen | halfGluing | bcdReplace $type = $_GET['type']; $ru = false; if ($lang == 'ru') $ru = true; if (empty($num)) $num = 5; if (empty($type)) $type = 'prefixGen'; if (empty($q)) $q = 'test'; /* function endsdel($word) // Глагольные окончания всякие { $ends = array( '/тся$/u', '/ться$/u', '/ть$/u', '/ся$/u', '/аю$/u', '/шь$/u', '/сь$/u', '/ют$/u', '/и$/u'); return preg_replace($ends, '', $word); } */ function prefixGen($words, $ru)// Алгоритм добавления приставок { unset($words['halves1'], $words['halves2']); foreach ($words as $val) { $prefixes = 'su, do, du, de, un, pseudo, super, emo, hyper, mega, meta, nano, tera, anti, avia, porno, euro, bio, micro, uni, neo, conta, co-, in, mis, over, pre, post, re, sub'; $end = $val; if ($ru) { $prefixes = 'недо, пере, во, вы, до, за, изо, ко, на, не, о, обо, ото, па, по, подо, пра, предо, про, разо, со, пре, при, мета, су, у, гипер, гипо, недопере, перенедо, ана, а, дека, гекто, кило, мега, гига, пета, экса, тера, микро, мини, милли, нано, пико, деци, йокто, йоби, киби, меби, гиби, теби, пеби, эксби, экс-, зеби, эрзац-, слабо, био, техно, страшно, переподвы, индо, евро, нагло, спорно, псевдо, сверх, супер, квази, лже, архи, де, анти, ультра, флудо, эмо, порно, глупо, умно, странно, обоюдо, нео, после, авиа, пай-, ебо, педо, уни, лакто, литро, нарко, вые, добро, снего, садо, абра, арабо, гидро, англо, педро, ибн-, сочно, трудо, грязно, ложно, переподвы, худо, ржачно, любо, мило, крико, синхро, психо, водо, говно, круто, вольно, пара, паро, боле, астро, стерео, моно, сыро, мясо, нитро, зло, авто, мото, вело, кино, радио, ретро, трахо, сексо, вечно, потно, взрыво, криво, ядо, волно, фило, само, крупно, мелко, титько, жопо, гнуто, рабо, крио, аква, длинно, лаго, баго, блохо, макро, би, тетра, тупо, страхо, воро, бандито, сердито, вьюго, ветро, градо, между, токсо, токси, славно, бого, полу, полу, полу, нано, нано, лже, лже, эмо, эмо, эмо, микро, микро, псевдо, всевдо, квази, квази, нарко, евро, евро, ибн-, ибн-'; } $prefixes = explode(', ', $prefixes); shuffle($prefixes); $prefix = $prefixes[0]; $result[] = $prefix . $end; } return $result; } function halfGluing($words, $ru)// Алгоритм склейки половинок разных слов { shuffle($words['halves2']); foreach ($words['halves1'] as $key => $val) { $end = $words['halves2'][$key]; $result[] = $val . $end; } return $result; } function bcdReplace($words, $ru) // Алгоритм замены согласных { unset($words['halves1'], $words['halves2']); function randl($letters) { shuffle($letters); return array_shift($letters); } function bcd($raw, $ru) { $letters = str_split('bcdfghklmnpqrstvwxz'); if ($ru) $letters = explode(',', 'б,в,г,д,ж,з,к,л,м,н,р,с,ч,ш'); // Исключение некоторых букв повышает читаемость $temp = mb_split('1', $raw); foreach ($temp as $val) { $one = $val; if ($val == '0') $one = randl($letters); $nick .= $one; } return $nick; } foreach ($words as $word) { $search = 'bcdfghklmnpqrstvwxz'; if ($ru) $search = 'бвгджзклмнпрстфхцчшщ'; $raw = preg_replace("/[$search]/u", '101', $word); $result[] = bcd($raw, $ru); } return $result; } // $base = unserialize(file_get_contents("base.txt")); // Удобно для тестирования $base = unserialize( file_get_contents("http://pipes.yahoo.com/pipes/pipe.run?_id=2e234671cafed4492b6f560a4d9d0ddb&_render=php&int=4-12&lang=$lang&q=$q") ); $words = $base['value']['items']; foreach ($words as $val) { $word = $val['title']; $justwords[] = $word; $lesshalf = '{' . floor(mb_strlen($word) * 0.4) . '}'; $ready = 'бвгджзклмнпрстфхцчшщbcdfghklmnpqrstvwxz'; preg_match_all("/(^.$lesshalf.*[$ready])(.*$)/Uu", $word, $halves); $justwords['halves1'][] = $halves[1][0]; $justwords['halves2'][] = $halves[2][0]; } $nicknames = $type($justwords, $ru); shuffle($nicknames); $result = array_slice($nicknames, 0, $num); if (!empty($result)) { echo join(', ', $result); } else { echo 'error'; }
This paste will be private.
From the Design Piracy series on my blog: