Генератор ников

sanu0074

Новичок
Где взять генератор ников, написанный на PHP, или exe-файл, который можно будет выполнить через exec() ?
или подкиньте идею как свой собственный написать, на чем основываться, чтобы имена были похожи на введенные человеком а не на рандомный набор символов...
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Мне было скучно.
http://demo.scr.kz/trash/nick.php

Написано минут за 10, желающие могут развивать идею, сколько угодно.

PHP:
<?php
function probability(array $array)
{
    $max = array_sum($array);
    $rand = mt_rand(0, $max);
    $limit = 0;
    $result = false;
    foreach ($array as $key => $item)
    {
        $limit += $item;
        if ($rand <= $limit)
        {
            $result = $key;
            break;
        }
    }

    return $result;
}
function arr_rand_item($arr)
{
    return $arr[array_rand($arr)];
}

function form_syllable($type = 'any')
{
    $ltt = array(
        'vw' => array(

            'у' => 10, 'е' => 50, 'ы' => 3, 'а' => 100, 'о' => 30, 'э' => 1, 'я' => 3, 'и' => 20, 'ю' => 10
        ),
        'sn' => array(
            'ц' => 1, 'к' => 40, 'н' => 40, 'г' => 10, 'ш' => 5, 'щ' => 3, 'з' => 10, 'х' => 3, 'ф' => 3, 'в' => 30, 'п' => 20, 'р' => 10, 'л' => 30, 'д' => 10, 'ж' => 10, 'ч' => 3, 'с' => 30, 'м' => 25, 'т' => 15, 'б' => 20
        ),
        'et' => array(
            'й' =>  0, 'ь' => 30,
        ),
    );

    $schemes = array(
        'closing' => array('vw', 'sn'),
        'closed'  => array('sn', 'vw', 'sn'),
        'opened'  => array('sn', 'vw'),
        'finish'  => array('sn', 'vw', 'sn', 'et')
    );

    if (!in_array($type, array_keys($schemes)))
    {
        $type = array_rand($schemes);
    }

    $syllable = '';

    foreach ($schemes[$type] as $letter)
    {
        $syllable .= probability($ltt[$letter]);
    }

    return $syllable;
}

function form_name($size = 0)
{
    if (!$size) { $size = rand(2, 4); }
    $scheme = array('opened');
    for($i = 1; $i < $size; $i++)
    {
        $scheme[] = arr_rand_item(array('closing', 'closed'));
    }

    if (rand(0, 1))
    {
        $scheme[] = arr_rand_item(array('closing', 'closed', 'opened', 'finish'));
    }

    $name = '';
    foreach($scheme as $syl)
    {
        $name.=form_syllable($syl);
    }

    $enc = 'utf-8';
    return mb_strtoupper(mb_substr($name, 0, 1, $enc), $enc).mb_substr($name, 1, mb_strlen($name, $enc), $enc);
}


echo form_name();
 
Последнее редактирование:

Breeze

goshogun
Команда форума
Партнер клуба
флоппик, ты зачем это выложил?
там ненулевая вероятность вызвать демона апокалипсиса.
ну или получить новый каталог икеи
 
Сверху