<?php

/**
 * genlognames.php - генератор данных для регистрации одного пользователя 
 *
 * Copyright (c) 2011, Student Name <student@cs.karelia.ru>
*/

$user_rname "СидоРов";    # исходное имя 
$user_lname "";        # имя латиницей
$user_pass  "";        # пароль

/*
 * latinize - посимвольно преобразует строку с русскими символами 
 * в строку с латинскими символами
 * 
 * Парамметры:
 *    $str - строка с русскими символами в кодировке UTF8
 *
 * Возвращаемое значение:
 *    функция возвращает строку латинских символов
*/    
function latinize($str)
{

/* Массив соответствий символов*/
$alpha = array (
    
"а" => "a",
    
"б" => "b",
    
"в" => "v",
    
"г" => "g",
    
"д" => "d",
    
"е" => "e",
    
"ё" => "e",
    
"ж" => "zh",
    
"з" => "z",
    
"и" => "i",
    
"й" => "i",
    
"к" => "k",
    
"л" => "l",
    
"м" => "m",
    
"н" => "n",
    
"о" => "o",
    
"п" => "p",
    
"р" => "r",
    
"с" => "s",
    
"т" => "t",
    
"у" => "u",
    
"ф" => "f",
    
"х" => "kh",
    
"ц" => "c",
    
"ч" => "ch",
    
"ш" => "sh",
    
"щ" => "sch",
    
"ь" => "",
    
"ы" => "y",
    
"ъ" => "",
    
"э" => "e",
    
"ю" => "yu",
    
"я" => "ya"
    
);

    
$r "";

    
    
/* Посимвольная замена  русских символов. 
     * Используются функции для мультибайтовых строк  */
    
for($i 0$i mb_strlen($str"UTF-8"); $i++)
    {
        
$x mb_substr($str$i1"UTF-8");
        
$r .= $alpha[$x];
    }
    return 
$r;
}

                                                        
    
/* латинизация строки, приведенной к нижнему регистру*/
    
$user_lname latinize(mb_strtolower($user_rname"utf8"));
    
    
/* генерация пароля pwgen
    * ключи:
    *    -1 - выдать только один вариант
    *    -с - хотя бы одна заглавная буква
    *    -B - не использовать неоднозначно-читаемые символы (l,1,O,0)
    */
    
$user_pass exec("pwgen -1 -c -B");
            
?>