Преобразование русских символов в транслит

В этом уроке мы с Вами сделаем преобразование русских символов в транслит.

Часто бывает так, что Вы создаете какой-либо сайт, у Вас есть новости, статьи или товары и при выборе конкретной статьи, чтобы ее посмотреть, делается выборка по id записи в базе данных.

Но гораздо лучше если бы вы делали выборку по названию статьи, только, конечно не русскими символами, а транслитом.

Для этого Вам нужно дополнительно поле в базе данных например title_url, куда Вы будете записывать название статьи такое же как и на рускком, но только транслитом.

Например, статья у Вас называется — работа с функциями PHP, а в title_url можно записать так — rabota-s-funkciyami-php. Так смотрится лучше и для СЕО это лучше. Теперь у Вас формируется адресная строка, например так — www.2develop.ru?cat=php&t=rabota-s-funkciyami-php, вместо www.2develop.ru?cat=php&id=3. Немного длинее, но кто сказал, что в адресной строке нужно экономить место?

И сейчас к главному, чтобы самому не прописывать руками название статьи транслитом в ячейку в Вашей админке, можно использовать простую функцию для, так скажем, перевода русских букв в транслит.

function translit($str)
{
$tr = array( //в этом массиве перечисляем все русские символы и меняем их на англ.
    "А"=>"a",
    "Б"=>"b",
    "В"=>"v", // ну и так далее
  );
  return strtr($str, $tr);
}

Скачать полностью готовую функцию

Этой функцией мы принимаем какую-либо строку и каждый русский символ строки, мы меняем на транслит. Чтобы получить новую строку с названием на транслите можно сделать так, для примера:

$title = $_POST['title']; // сохраняем русское название статьи в переменную
$title_url = translit($title); // вызываем функцию и как параметр отправляем туда русское название, и на выходе получаем название на транслите
echo $title_url; // проверяем так ли это

Теперь можем записывать все это дело в базу данных.

Если урок Вам был полезен, нажмите на любую кнопку ниже— буду благодарен :) Всем удачи и следите за ходом событий 😉

Комменты

  • Но ведь корректно не получится вывести транслит русских слов в этой функции, окончания слов бывают разные, хотя в принципе идея интересная, нужно попробовать погонять в разных вариантах. Вот только мне кажется все же надежней было бы сразу при добавления слова вносить уже готовый транслит заранее проанализировав его на ключевые слова.

  • функция бред.
    причина — в саму функцию впихнут массивБа это не хорошо.
    удачи!

    • Дмитрий Валак: 30-07-2012 в 8:07

      Спрашивается — зачем?

    • Дмитрий Валак: 30-07-2012 в 12:03

      По такой же логике, можно в любую функцию передать неверный параметр и функция перестает работать как надо.