Транслит кириллицы для создания урлов

Транслит кириллицы для создания урловТранслит — это запись русского текста латинскими буквами.
В этой статейке, я хочу показать как можно автоматически делать транслит кириллицы, для дальнейшего использования в качестве урла. Как наверняка вы знаете, в url`е могут содержаться символы латиницы и символ нижнего подчеркивания. Именно по таким критериям и должен происходить транслит нашей строки.

Для удобства использования кода, я оформил его в виде функции:

/**
* Функция для транслита кириллицы
* @var string $text - входная строка, содержащая кириллицу
*
* @return string - строка, которую можно использовать в качестве урла
*/
function getTranslitForUrl($text){
    // массив для транслита
    $arrayConvert = array(
        'а' => 'a',   'б' => 'b',   'в' => 'v',   'г' => 'g',   
        'д' => 'd',   'е' => 'e',   'ё' => 'e',   'ж' => 'zh',
        'з' => 'z',   'и' => 'i',   'й' => 'y',   'к' => 'k',
        'л' => 'l',   'м' => 'm',   'н' => 'n',   'о' => 'o',   
        'п' => 'p',   'р' => 'r',   'с' => 's',   'т' => 't',   
        'у' => 'u',   'ф' => 'f',   'х' => 'h',   'ц' => 'c',
        'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch', 'ы' => 'y',   
        'э' => 'e',   'ю' => 'yu',  'я' => 'ya',  ' ' => '_'
    );
        
    // массив для хранения валидных символов
    $arraySuccessLiteral = array();
    foreach($arrayConvert as $key => $value){
        $arraySuccessLiteral[] = $key;
    }
    // добавляем числа в массив с валидными символами
    $arrayInt = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    $arraySuccessLiteral = array_merge($arraySuccessLiteral, $arrayInt);
    
    // разбиваем строку по символу и упаковываем в массив 
    $arrayText = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
    // выбираем из всего массива только валидные символы, остальные отбрасываем
    foreach($arrayText as $lit){
        $literal = mb_strtolower($lit, 'utf-8'); // переводим символы в нижний регистр
        // если символ валидный, то берем его
        if(in_array($literal, $arraySuccessLiteral)){
            $newText .= $literal;
        }
    } 
    // удаляем дублирующиеся пробелы
    $validText =  preg_replace('/ {2,}/',' ', $newText); 

    // меняем кириллицу на соответствующие латинские символы
    $result = strtr($validText, $arrayConvert);
    return $result;
}

И пример использования:

$text = 'Любой !"№;%:?* текст со спец символами !"№;%:?* и повторяющимися        пробелами 1 2 3';
echo getTranslitForUrl($text);
Рассказать друзьям:


Транслит кириллицы для создания урлов: 1 комментарий

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*