Skip to content

Instantly share code, notes, and snippets.

@ekam230
Last active August 25, 2021 18:57
Show Gist options
  • Save ekam230/0692ac217eb68bb6470e1f1b3103fc9e to your computer and use it in GitHub Desktop.
Save ekam230/0692ac217eb68bb6470e1f1b3103fc9e to your computer and use it in GitHub Desktop.
Транслитерация названий страниц на PHP в ЧПУ
Транслитерация названий страниц на PHP в ЧПУ
Следующая функция PHP помогает произвести транслитерацию заголовка страницы в ЧПУ с русского и казахского языков на английский язык:
<?php
function translitURL($str)
{
$tr = array(
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g",
"Д"=>"d","Е"=>"e","Ё"=>"yo","Ж"=>"zh","З"=>"z","И"=>"i",
"Й"=>"j","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
"О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",
"У"=>"u","Ф"=>"f","Х"=>"x","Ц"=>"c","Ч"=>"ch",
"Ш"=>"sh","Щ"=>"shh","Ъ"=>"j","Ы"=>"y","Ь"=>"",
"Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"zh",
"з"=>"z","и"=>"i","й"=>"j","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"x",
"ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"j",
"ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
" "=> "-", "."=> "", "І"=> "i",
"і"=> "i", "Ң"=> "n", "ң"=> "n",
"Ү"=> "u", "ү"=> "u", "Қ"=> "q",
"қ"=> "q", "Ұ"=> "u",
"ұ"=> "u", "Ғ"=> "g", "ғ"=> "g",
"Ө"=> "o", "ө"=> "o", "Ә"=> "a",
"ә"=> "a"
);
// Убираю тире, дефисы внутри строки
$urlstr = str_replace('–'," ",$str);
$urlstr = str_replace('-'," ",$urlstr);
$urlstr = str_replace('—'," ",$urlstr);
// Убираю лишние пробелы внутри строки
$urlstr=preg_replace('/\s+/',' ',$urlstr);
if (preg_match('/[^A-Za-z0-9_\-]/', $urlstr)) {
$urlstr = strtr($urlstr,$tr);
$urlstr = preg_replace('/[^A-Za-z0-9_\-]/', '', $urlstr);
$urlstr = strtolower($urlstr);
return $urlstr;
} else {
return strtolower($str);
}
}
?>
Пример использования PHP функции транслетерации в ЧПУ:
<?php
$tbl_dt = 'data'; $count = 0;
$result = mysql_query("SELECT title,id,name FROM ".$tbl_dt);
$myrow = mysql_fetch_array($result);
do
{
$name = translitURL($myrow["title"]);
$result1 = mysql_query (
"UPDATE ".$tbl_dt." SET name='$name' WHERE id='$myrow[id]'");
if ($result1 == 'true') {
echo "<p align='center'>".$myrow["title"]." - ".$name."</p>";
}else{
echo "<p align='center'>Транслитерирация "
.$myrow["title"]." не прошла!</p>";
}
$count = $count + 1;
}
while ($myrow = mysql_fetch_array($result));
?>
@psics
Copy link

psics commented Sep 3, 2020

если переместить strtolower вначало функции, то код будет меньше в 2 раза. И еще актуален вопрос с кавычками) их бы добавить в замену на ничто)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment