[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с функцией strtr()
JackSaLey
При попытке перевести русские символы в ссылке на английские функция просто их не видит
$tr = array(
"А"=>"A","Б"=>"B","В"=>"V"," ;Г"=>"G",
"Д"=>"D","Е"=>"E","Ж"=>"J"," ;З"=>"Z","И"=>"I",
"Й"=>"Y","К"=>"K","Л"=>"L"," ;М"=>"M","Н"=>"N",
"О"=>"O","П"=>"P","Р"=>"R"," ;С"=>"S","Т"=>"T",
"У"=>"U","Ф"=>"F","Х"=>"H"," ;Ц"=>"TS","Ч"=>"CH",
"Ш"=>"SH","Щ"=>"SCH","Ъ"=>"",&qu ot;Ы"=>"YI","Ь"=>"",
"Э"=>"E","Ю"=>"YU","Я"=>"YA",&qu ot;а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d"," ;е"=>"e","ж"=>"j",
"з"=>"z","и"=>"i","й"=>"y"," ;к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o"," ;п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u"," ;ф"=>"f","х"=>"h",
"ц"=>"ts","ч"=>"ch","ш"=>"sh",&q uot;щ"=>"sch","ъ"=>"y",
"ы"=>"yi","ь"=>"'","э"=>"e", "ю"=>"yu","я"=>"ya");
echo strtr($string,$tr);
Но выводит ссылки все равно русскими буквами игнорируя функцию

Помогите плиз уже все перепробовал




Спустя 1 минута, 35 секунд (6.03.2012 - 14:51) JackSaLey написал(а):
При этом просто если переменную создать со словом русским все отлично переводит а с базы данных не хочет.....

Спустя 6 минут, 51 секунда (6.03.2012 - 14:57) Visman написал(а):
Вот моя функция для транслитерации.
function translit($f)
{
static $UTF8AR = null;

if (is_null($UTF8AR))
{
$UTF8AR = array(
'а' => 'a', 'ф' => 'o', 'ď' => 'd', 'ḟ' => 'f', 'л' => 'e', 'š' => 's', 'ơ' => 'o',
'Я' => 'ss', 'ă' => 'a', 'ř' => 'r', 'ț' => 't', 'ň' => 'n', 'ā' => 'a', 'ķ' => 'k',
'ŝ' => 's', 'ỳ' => 'y', 'ņ' => 'n', 'ĺ' => 'l', 'ħ' => 'h', 'ṗ' => 'p', 'у' => 'o',
'ъ' => 'u', 'ě' => 'e', 'й' => 'e', 'з' => 'c', 'ẁ' => 'w', 'ċ' => 'c', 'х' => 'o',
'ṡ' => 's', 'ш' => 'o', 'ģ' => 'g', 'ŧ' => 't', 'ș' => 's', 'ė' => 'e', 'ĉ' => 'c',
'ś' => 's', 'о' => 'i', 'ű' => 'u', 'ć' => 'c', 'ę' => 'e', 'ŵ' => 'w', 'ṫ' => 't',
'ū' => 'u', 'č' => 'c', 'ц' => 'oe', 'и' => 'e', 'ŷ' => 'y', 'ą' => 'a', 'ł' => 'l',
'ų' => 'u', 'ů' => 'u', 'ş' => 's', 'ğ' => 'g', 'ļ' => 'l', 'ƒ' => 'f', 'ž' => 'z',
'ẃ' => 'w', 'ḃ' => 'b', 'е' => 'a', 'м' => 'i', 'п' => 'i', 'ḋ' => 'd', 'ť' => 't',
'ŗ' => 'r', 'д' => 'ae', 'н' => 'i', 'ŕ' => 'r', 'к' => 'e', 'ь' => 'ue', 'т' => 'o',
'ē' => 'e', 'с' => 'n', 'ń' => 'n', 'ĥ' => 'h', 'ĝ' => 'g', 'đ' => 'd', 'ĵ' => 'j',
'я' => 'y', 'ũ' => 'u', 'ŭ' => 'u', 'ư' => 'u', 'ţ' => 't', 'э' => 'y', 'ő' => 'o',
'в' => 'a', 'ľ' => 'l', 'ẅ' => 'w', 'ż' => 'z', 'ī' => 'i', 'г' => 'a', 'ġ' => 'g',
'ṁ' => 'm', 'ō' => 'o', 'ĩ' => 'i', 'щ' => 'u', 'į' => 'i', 'ź' => 'z', 'б' => 'a',
'ы' => 'u', 'ю' => 'th', 'р' => 'dh', 'ж' => 'ae', 'µ' => 'u', 'ĕ' => 'e',
'А' => 'A', 'Ф' => 'O', 'Ď' => 'D', 'Ḟ' => 'F', 'Л' => 'E', 'Š' => 'S', 'Ơ' => 'O',
'Ă' => 'A', 'Ř' => 'R', 'Ț' => 'T', 'Ň' => 'N', 'Ā' => 'A', 'Ķ' => 'K',
'Ŝ' => 'S', 'Ỳ' => 'Y', 'Ņ' => 'N', 'Ĺ' => 'L', 'Ħ' => 'H', 'Ṗ' => 'P', 'У' => 'O',
'Ъ' => 'U', 'Ě' => 'E', 'Й' => 'E', 'З' => 'C', 'Ẁ' => 'W', 'Ċ' => 'C', 'Х' => 'O',
'Ṡ' => 'S', 'Ш' => 'O', 'Ģ' => 'G', 'Ŧ' => 'T', 'Ș' => 'S', 'Ė' => 'E', 'Ĉ' => 'C',
'Ś' => 'S', 'О' => 'I', 'Ű' => 'U', 'Ć' => 'C', 'Ę' => 'E', 'Ŵ' => 'W', 'Ṫ' => 'T',
'Ū' => 'U', 'Č' => 'C', 'Ц' => 'Oe', 'И' => 'E', 'Ŷ' => 'Y', 'Ą' => 'A', 'Ł' => 'L',
'Ų' => 'U', 'Ů' => 'U', 'Ş' => 'S', 'Ğ' => 'G', 'Ļ' => 'L', 'Ƒ' => 'F', 'Ž' => 'Z',
'Ẃ' => 'W', 'Ḃ' => 'B', 'Е' => 'A', 'М' => 'I', 'П' => 'I', 'Ḋ' => 'D', 'Ť' => 'T',
'Ŗ' => 'R', 'Д' => 'Ae', 'Н' => 'I', 'Ŕ' => 'R', 'К' => 'E', 'Ь' => 'Ue', 'Т' => 'O',
'Ē' => 'E', 'С' => 'N', 'Ń' => 'N', 'Ĥ' => 'H', 'Ĝ' => 'G', 'Đ' => 'D', 'Ĵ' => 'J',
'Ÿ' => 'Y', 'Ũ' => 'U', 'Ŭ' => 'U', 'Ư' => 'U', 'Ţ' => 'T', 'Э' => 'Y', 'Ő' => 'O',
'В' => 'A', 'Ľ' => 'L', 'Ẅ' => 'W', 'Ż' => 'Z', 'Ī' => 'I', 'Г' => 'A', 'Ġ' => 'G',
'Ṁ' => 'M', 'Ō' => 'O', 'Ĩ' => 'I', 'Щ' => 'U', 'Į' => 'I', 'Ź' => 'Z', 'Б' => 'A',
'Ы' => 'U', 'Ю' => 'Th', 'Р' => 'Dh', 'Ж' => 'Ae', 'Ĕ' => 'E',
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'jo',
'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'jj', 'к' => 'k', 'л' => 'l', 'м' => 'm',
'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'kh', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shh', 'ъ' => '',
'ы' => 'y', 'ь' => '', 'э' => 'eh', 'ю' => 'ju', 'я' => 'ja',
'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Jo',
'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Jj', 'К' => 'K', 'Л' => 'L', 'М' => 'M',
'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U',
'Ф' => 'F', 'Х' => 'Kh', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Shh', 'Ъ' => '',
'Ы' => 'Y', 'Ь' => '', 'Э' => 'Eh', 'Ю' => 'Ju', 'Я' => 'Ja',
);

}

$f = str_replace(array_keys($UTF8AR), array_values($UTF8AR), $f);

return $f;
}

Спустя 8 минут, 47 секунд (6.03.2012 - 15:06) JackSaLey написал(а):
Все равно ссылку выбивает без символов если так

public static function CleanUrlText($string) {
//Удаляем все символы, кроме a-z, 0-9, дефиса, знака подчеркивания и пробела
$not_acceptable_characters_regex = '#[^-a-zA-Z0-9_ ]#';
static $UTF8AR = null;

if (is_null($UTF8AR))
{
$UTF8AR = array(
'а' => 'a', 'ф' => 'o', 'ď' => 'd', 'ḟ' => 'f', 'л' => 'e', 'š' => 's', 'ơ' => 'o',
'Я' => 'ss', 'ă' => 'a', 'ř' => 'r', 'ț' => 't', 'ň' => 'n', 'ā' => 'a', 'ķ' => 'k',
'ŝ' => 's', 'ỳ' => 'y', 'ņ' => 'n', 'ĺ' => 'l', 'ħ' => 'h', 'ṗ' => 'p', 'у' => 'o',
'ъ' => 'u', 'ě' => 'e', 'й' => 'e', 'з' => 'c', 'ẁ' => 'w', 'ċ' => 'c', 'х' => 'o',
'ṡ' => 's', 'ш' => 'o', 'ģ' => 'g', 'ŧ' => 't', 'ș' => 's', 'ė' => 'e', 'ĉ' => 'c',
'ś' => 's', 'о' => 'i', 'ű' => 'u', 'ć' => 'c', 'ę' => 'e', 'ŵ' => 'w', 'ṫ' => 't',
'ū' => 'u', 'č' => 'c', 'ц' => 'oe', 'и' => 'e', 'ŷ' => 'y', 'ą' => 'a', 'ł' => 'l',
'ų' => 'u', 'ů' => 'u', 'ş' => 's', 'ğ' => 'g', 'ļ' => 'l', 'ƒ' => 'f', 'ž' => 'z',
'ẃ' => 'w', 'ḃ' => 'b', 'е' => 'a', 'м' => 'i', 'п' => 'i', 'ḋ' => 'd', 'ť' => 't',
'ŗ' => 'r', 'д' => 'ae', 'н' => 'i', 'ŕ' => 'r', 'к' => 'e', 'ь' => 'ue', 'т' => 'o',
'ē' => 'e', 'с' => 'n', 'ń' => 'n', 'ĥ' => 'h', 'ĝ' => 'g', 'đ' => 'd', 'ĵ' => 'j',
'я' => 'y', 'ũ' => 'u', 'ŭ' => 'u', 'ư' => 'u', 'ţ' => 't', 'э' => 'y', 'ő' => 'o',
'в' => 'a', 'ľ' => 'l', 'ẅ' => 'w', 'ż' => 'z', 'ī' => 'i', 'г' => 'a', 'ġ' => 'g',
'ṁ' => 'm', 'ō' => 'o', 'ĩ' => 'i', 'щ' => 'u', 'į' => 'i', 'ź' => 'z', 'б' => 'a',
'ы' => 'u', 'ю' => 'th', 'р' => 'dh', 'ж' => 'ae', 'µ' => 'u', 'ĕ' => 'e',
'А' => 'A', 'Ф' => 'O', 'Ď' => 'D', 'Ḟ' => 'F', 'Л' => 'E', 'Š' => 'S', 'Ơ' => 'O',
'Ă' => 'A', 'Ř' => 'R', 'Ț' => 'T', 'Ň' => 'N', 'Ā' => 'A', 'Ķ' => 'K',
'Ŝ' => 'S', 'Ỳ' => 'Y', 'Ņ' => 'N', 'Ĺ' => 'L', 'Ħ' => 'H', 'Ṗ' => 'P', 'У' => 'O',
'Ъ' => 'U', 'Ě' => 'E', 'Й' => 'E', 'З' => 'C', 'Ẁ' => 'W', 'Ċ' => 'C', 'Х' => 'O',
'Ṡ' => 'S', 'Ш' => 'O', 'Ģ' => 'G', 'Ŧ' => 'T', 'Ș' => 'S', 'Ė' => 'E', 'Ĉ' => 'C',
'Ś' => 'S', 'О' => 'I', 'Ű' => 'U', 'Ć' => 'C', 'Ę' => 'E', 'Ŵ' => 'W', 'Ṫ' => 'T',
'Ū' => 'U', 'Č' => 'C', 'Ц' => 'Oe', 'И' => 'E', 'Ŷ' => 'Y', 'Ą' => 'A', 'Ł' => 'L',
'Ų' => 'U', 'Ů' => 'U', 'Ş' => 'S', 'Ğ' => 'G', 'Ļ' => 'L', 'Ƒ' => 'F', 'Ž' => 'Z',
'Ẃ' => 'W', 'Ḃ' => 'B', 'Е' => 'A', 'М' => 'I', 'П' => 'I', 'Ḋ' => 'D', 'Ť' => 'T',
'Ŗ' => 'R', 'Д' => 'Ae', 'Н' => 'I', 'Ŕ' => 'R', 'К' => 'E', 'Ь' => 'Ue', 'Т' => 'O',
'Ē' => 'E', 'С' => 'N', 'Ń' => 'N', 'Ĥ' => 'H', 'Ĝ' => 'G', 'Đ' => 'D', 'Ĵ' => 'J',
'Ÿ' => 'Y', 'Ũ' => 'U', 'Ŭ' => 'U', 'Ư' => 'U', 'Ţ' => 'T', 'Э' => 'Y', 'Ő' => 'O',
'В' => 'A', 'Ľ' => 'L', 'Ẅ' => 'W', 'Ż' => 'Z', 'Ī' => 'I', 'Г' => 'A', 'Ġ' => 'G',
'Ṁ' => 'M', 'Ō' => 'O', 'Ĩ' => 'I', 'Щ' => 'U', 'Į' => 'I', 'Ź' => 'Z', 'Б' => 'A',
'Ы' => 'U', 'Ю' => 'Th', 'Р' => 'Dh', 'Ж' => 'Ae', 'Ĕ' => 'E',
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'jo',
'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'jj', 'к' => 'k', 'л' => 'l', 'м' => 'm',
'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'kh', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shh', 'ъ' => '',
'ы' => 'y', 'ь' => '', 'э' => 'eh', 'ю' => 'ju', 'я' => 'ja',
'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Jo',
'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Jj', 'К' => 'K', 'Л' => 'L', 'М' => 'M',
'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U',
'Ф' => 'F', 'Х' => 'Kh', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Shh', 'Ъ' => '',
'Ы' => 'Y', 'Ь' => '', 'Э' => 'Eh', 'Ю' => 'Ju', 'Я' => 'Ja',
);
}

$string = str_replace(array_keys($UTF8AR), array_values($UTF8AR), $string);

$string = preg_replace($not_acceptable_characters_regex, '', $string);
//Удаляем все пробелы в начале и конце строки
$string = trim($string);
//Заменяем все дефисы, знаки подчеркивания и пробелы дефисами
$string = preg_replace('#[-_ ]+#', '-', $string);
//Возвращаем подготовленную строку
return strtolower($string);
}

И с русскими буквами если заменить $not_acceptable_characters_regex = '#[^-a-zA-ZА-Я0-9_ ]а-я#';
Если сделать так $not_acceptable_characters_regex = '#[^-a-zA-Zа-яА-Я0-9_ ]#'; то выбивает только первые буквы названий категорий в ссылках

Спустя 9 минут, 34 секунды (6.03.2012 - 15:16) Visman написал(а):
Я тебе дал готовую функцию, которая заменяет русские буквы (или буквы других языков) на латинские.
Вызывай мою функцию первой в своей функции до других преобразований и не надо ломать, то что давно проверено на работоспособность.

Спустя 1 минута (6.03.2012 - 15:17) JackSaLey написал(а):
ща попробую

Спустя 34 секунды (6.03.2012 - 15:17) RCuPeR написал(а):
Visman, для чего в вашем примере следующая проверка:

static $UTF8AR = null;

if (is_null($UTF8AR))
{

}



Разве переменная, или свойство, до выполнения этих строк может быть != NULL ?

Спустя 3 минуты, 30 секунд (6.03.2012 - 15:21) Visman написал(а):
RCuPeR, у меня эта функция может вызываться несколько раз в скрипте.

Спустя 57 минут, 40 секунд (6.03.2012 - 16:19) JackSaLey написал(а):
Создал

<?php
class TransliteName {
public static function Translite($f)
{
static $UTF8AR = null;

if (is_null($UTF8AR))
{
$UTF8AR = array(
'а' => 'a', 'ф' => 'o', 'ď' => 'd', 'ḟ' => 'f', 'л' => 'e', 'š' => 's', 'ơ' => 'o',
'Я' => 'ss', 'ă' => 'a', 'ř' => 'r', 'ț' => 't', 'ň' => 'n', 'ā' => 'a', 'ķ' => 'k',
'ŝ' => 's', 'ỳ' => 'y', 'ņ' => 'n', 'ĺ' => 'l', 'ħ' => 'h', 'ṗ' => 'p', 'у' => 'o',
'ъ' => 'u', 'ě' => 'e', 'й' => 'e', 'з' => 'c', 'ẁ' => 'w', 'ċ' => 'c', 'х' => 'o',
'ṡ' => 's', 'ш' => 'o', 'ģ' => 'g', 'ŧ' => 't', 'ș' => 's', 'ė' => 'e', 'ĉ' => 'c',
'ś' => 's', 'о' => 'i', 'ű' => 'u', 'ć' => 'c', 'ę' => 'e', 'ŵ' => 'w', 'ṫ' => 't',
'ū' => 'u', 'č' => 'c', 'ц' => 'oe', 'и' => 'e', 'ŷ' => 'y', 'ą' => 'a', 'ł' => 'l',
'ų' => 'u', 'ů' => 'u', 'ş' => 's', 'ğ' => 'g', 'ļ' => 'l', 'ƒ' => 'f', 'ž' => 'z',
'ẃ' => 'w', 'ḃ' => 'b', 'е' => 'a', 'м' => 'i', 'п' => 'i', 'ḋ' => 'd', 'ť' => 't',
'ŗ' => 'r', 'д' => 'ae', 'н' => 'i', 'ŕ' => 'r', 'к' => 'e', 'ь' => 'ue', 'т' => 'o',
'ē' => 'e', 'с' => 'n', 'ń' => 'n', 'ĥ' => 'h', 'ĝ' => 'g', 'đ' => 'd', 'ĵ' => 'j',
'я' => 'y', 'ũ' => 'u', 'ŭ' => 'u', 'ư' => 'u', 'ţ' => 't', 'э' => 'y', 'ő' => 'o',
'в' => 'a', 'ľ' => 'l', 'ẅ' => 'w', 'ż' => 'z', 'ī' => 'i', 'г' => 'a', 'ġ' => 'g',
'ṁ' => 'm', 'ō' => 'o', 'ĩ' => 'i', 'щ' => 'u', 'į' => 'i', 'ź' => 'z', 'б' => 'a',
'ы' => 'u', 'ю' => 'th', 'р' => 'dh', 'ж' => 'ae', 'µ' => 'u', 'ĕ' => 'e',
'А' => 'A', 'Ф' => 'O', 'Ď' => 'D', 'Ḟ' => 'F', 'Л' => 'E', 'Š' => 'S', 'Ơ' => 'O',
'Ă' => 'A', 'Ř' => 'R', 'Ț' => 'T', 'Ň' => 'N', 'Ā' => 'A', 'Ķ' => 'K',
'Ŝ' => 'S', 'Ỳ' => 'Y', 'Ņ' => 'N', 'Ĺ' => 'L', 'Ħ' => 'H', 'Ṗ' => 'P', 'У' => 'O',
'Ъ' => 'U', 'Ě' => 'E', 'Й' => 'E', 'З' => 'C', 'Ẁ' => 'W', 'Ċ' => 'C', 'Х' => 'O',
'Ṡ' => 'S', 'Ш' => 'O', 'Ģ' => 'G', 'Ŧ' => 'T', 'Ș' => 'S', 'Ė' => 'E', 'Ĉ' => 'C',
'Ś' => 'S', 'О' => 'I', 'Ű' => 'U', 'Ć' => 'C', 'Ę' => 'E', 'Ŵ' => 'W', 'Ṫ' => 'T',
'Ū' => 'U', 'Č' => 'C', 'Ц' => 'Oe', 'И' => 'E', 'Ŷ' => 'Y', 'Ą' => 'A', 'Ł' => 'L',
'Ų' => 'U', 'Ů' => 'U', 'Ş' => 'S', 'Ğ' => 'G', 'Ļ' => 'L', 'Ƒ' => 'F', 'Ž' => 'Z',
'Ẃ' => 'W', 'Ḃ' => 'B', 'Е' => 'A', 'М' => 'I', 'П' => 'I', 'Ḋ' => 'D', 'Ť' => 'T',
'Ŗ' => 'R', 'Д' => 'Ae', 'Н' => 'I', 'Ŕ' => 'R', 'К' => 'E', 'Ь' => 'Ue', 'Т' => 'O',
'Ē' => 'E', 'С' => 'N', 'Ń' => 'N', 'Ĥ' => 'H', 'Ĝ' => 'G', 'Đ' => 'D', 'Ĵ' => 'J',
'Ÿ' => 'Y', 'Ũ' => 'U', 'Ŭ' => 'U', 'Ư' => 'U', 'Ţ' => 'T', 'Э' => 'Y', 'Ő' => 'O',
'В' => 'A', 'Ľ' => 'L', 'Ẅ' => 'W', 'Ż' => 'Z', 'Ī' => 'I', 'Г' => 'A', 'Ġ' => 'G',
'Ṁ' => 'M', 'Ō' => 'O', 'Ĩ' => 'I', 'Щ' => 'U', 'Į' => 'I', 'Ź' => 'Z', 'Б' => 'A',
'Ы' => 'U', 'Ю' => 'Th', 'Р' => 'Dh', 'Ж' => 'Ae', 'Ĕ' => 'E',
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'jo',
'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'jj', 'к' => 'k', 'л' => 'l', 'м' => 'm',
'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'kh', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shh', 'ъ' => '',
'ы' => 'y', 'ь' => '', 'э' => 'eh', 'ю' => 'ju', 'я' => 'ja',
'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Jo',
'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Jj', 'К' => 'K', 'Л' => 'L', 'М' => 'M',
'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U',
'Ф' => 'F', 'Х' => 'Kh', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Shh', 'Ъ' => '',
'Ы' => 'Y', 'Ь' => '', 'Э' => 'Eh', 'Ю' => 'Ju', 'Я' => 'Ja',
);
}

$f = str_replace(array_keys($UTF8AR), array_values($UTF8AR), $f);

return $f;
}}
?>

загрузил в index.php самым первым

<?php
//Активаруем сеанс
session_start();
//Подключаем служебные файлы
require_once 'include/configs/config.php';
require_once BUSINESS_DIR.'error_handler.php';
//Задаем обработчик ошибок
ErrorHandler::SetHandler();
//Загружаем переводчик
require_once PRESENTATION_DIR.'translite_name.php';
//Загружаем шаблон страницы приложения
require_once PRESENTATION_DIR.'application.php';
require_once PRESENTATION_DIR.'link.php';
//Загружаем уровень логики приложения
require_once BUSINESS_DIR.'catalog.php';
//Загружаем дескриптор базы данных
require_once BUSINESS_DIR.'database_handler.php';
//Загружаем файл шаблоов Smarty
$smarty = new Application();
//Отображаем страницу
$smarty->display('store_front.tpl.html');
//Закрываем соединение с базой данных
DatabaseHandler::Close();
?>

Далее добавл в файл ссылок

постаил перевод сразу после вывода с хранимых процедур


<?php
class Link {
public static function Build($link) {
$base = 'http://'.getenv('SERVER_NAME');
//Если константа HTTP_SERVER_PORT определена и значение отличается от используемого по умолчанию ...
if (defined('HTTP_SERVER_PORT') && HTTP_SERVER_PORT != '80') {
//Добавляем номер порта
$base .= ':'.HTTP_SERVER_PORT;}
$link = $base.VIRTUAL_LOCATION.$link;
//Escape - символы для HTML
return htmlspecialchars($link, ENT_QUOTES);}
public static function ToDepartment($departmentId, $page = 1) {
$link = self::CleanUrlText(TransliteName::Translite(Catalog::GetDepartmentName($departmentId))).'-d'.$departmentId.'/';
if($page > 1) {$link .= 'page-'.$page.'/';}
return self::Build($link);}
public static function ToCategory($departmentId, $categoryId, $page = 1) {
$link = self::CleanUrlText(TransliteName::Translite(Catalog::GetDepartmentName($departmentId))).'-d'.$departmentId.'/'.self::CleanUrlText(Catalog::GetCategoryName($categoryId)).'-c'.$categoryId.'/';
if($page > 1) {$link .= 'page-'.$page.'/';}
return self::Build($link); self::Build($link);
}
public static function ToProduct($productId) {
$link = self::CleanUrlText(TransliteName::Translite(Catalog::GetProductName($productId))).'-p'.$productId.'/';
return self::Build($link);}
public static function ToIndex($page = 1) {
$link = '';
if($page > 1) {
$link .= 'page-'.$page.'/';
TransliteName::Translite($link);}
return self::Build($link);}
public static function QueryStringToArray($queryString) {
$result = array();
if($queryString != '') {
$elements = explode('&', $queryString);
foreach($elements as $key => $value) {
$element = explode('=', $value);
$result[urldecode($element[0])] = isset($element[1]) ? urldecode($element[1]) : '';}
}
return $result;}
//Подготавливает строку к использованию в URL
public static function CleanUrlText($string) {
//Удаляем все символы, кроме a-z, 0-9, дефиса, знака подчеркивания и пробела
$not_acceptable_characters_regex = '#[^-a-zA-ZА-Я0-9_ ]а-я#';
$string = preg_replace($not_acceptable_characters_regex, '', $string);
//Удаляем все пробелы в начале и конце строки
$string = trim($string);
//Заменяем все дефисы, знаки подчеркивания и пробелы дефисами
$string = preg_replace('#[-_ ]+#', '-', $string);
//Возвращаем подготовленную строку
return strtolower($string);
}
}
?>

Результат http://localhost/site/семена-d1/регулярные-c1/

Спустя 8 минут, 6 секунд (6.03.2012 - 16:27) JackSaLey написал(а):
С базы данных переводить не хочет все равно.....
Для проверки создал переменную со словом все перевело без проблем переводчик работает но с базы данных рускоязычных букв не видит

Спустя 4 минуты, 27 секунд (6.03.2012 - 16:31) JackSaLey написал(а):
Может где ступил выкладываю файл .htaccess

<IfModule mod_rewrite.c>
# Включаем mod_rewrite
RewriteEngine On
# Указываем папку, в которой находится приложение
# Используем /б если приложение находится в корневой папке
RewriteBase /site
# Переписываем в корректный домен, чтобы избежать проблем
# с канонизацией ссылок
# RewriteCond %{HTTP_HOST} !^www\.site\.ru
# RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
# Переписываем URL, заканчивающийся на /index.php или /index.html в /
RewriteCond %{THE_REQUEST} ^GET\.*/index\.(php|html?)\HTTP
RewriteRule ^(.*)index\.(php|html?)$ $1 [R=301,L]
# Переписываем страницы категорий
RewriteRule ^.*-d([0-9]+)/.*-c([0-9]+)/page-([0-9]+)/?$ index.php?DepartmentId=$1&CategoryId=$2&Page=$3 [L]
RewriteRule ^.*-d([0-9]+)/.*-c([0-9]+)/?$ index.php?DepartmentId=$1&CategoryId=$2 [L]
# Переписываем страницы отделов
RewriteRule ^.*-d([0-9]+)/page-([0-9]+)/?$ index.php?DepartmentId=$1&Page=$2 [L]
RewriteRule ^.*-d([0-9]+)/?$ index.php?DepartmentId=$1 [L]
# Переписываем подстраницы
RewriteRule ^page-d([0-9]+)/?$ index.php?Page=$1 [L]
# Переписываем страницы с информацией о товарах
RewriteRule ^.*-p([0-9]+)/?$ index.php?ProductId=$1 [L]
</IfModule>

Спустя 2 минуты, 23 секунды (6.03.2012 - 16:33) Visman написал(а):
Если уж классы, то
<?php

class
TransliteName {

private static $UTF8AR = array(
'а' => 'a', 'ф' => 'o', 'ď' => 'd', 'ḟ' => 'f', 'л' => 'e', 'š' => 's', 'ơ' => 'o',
'Я' => 'ss', 'ă' => 'a', 'ř' => 'r', 'ț' => 't', 'ň' => 'n', 'ā' => 'a', 'ķ' => 'k',
'ŝ' => 's', 'ỳ' => 'y', 'ņ' => 'n', 'ĺ' => 'l', 'ħ' => 'h', 'ṗ' => 'p', 'у' => 'o',
'ъ' => 'u', 'ě' => 'e', 'й' => 'e', 'з' => 'c', 'ẁ' => 'w', 'ċ' => 'c', 'х' => 'o',
'ṡ' => 's', 'ш' => 'o', 'ģ' => 'g', 'ŧ' => 't', 'ș' => 's', 'ė' => 'e', 'ĉ' => 'c',
'ś' => 's', 'о' => 'i', 'ű' => 'u', 'ć' => 'c', 'ę' => 'e', 'ŵ' => 'w', 'ṫ' => 't',
'ū' => 'u', 'č' => 'c', 'ц' => 'oe', 'и' => 'e', 'ŷ' => 'y', 'ą' => 'a', 'ł' => 'l',
'ų' => 'u', 'ů' => 'u', 'ş' => 's', 'ğ' => 'g', 'ļ' => 'l', 'ƒ' => 'f', 'ž' => 'z',
'ẃ' => 'w', 'ḃ' => 'b', 'е' => 'a', 'м' => 'i', 'п' => 'i', 'ḋ' => 'd', 'ť' => 't',
'ŗ' => 'r', 'д' => 'ae', 'н' => 'i', 'ŕ' => 'r', 'к' => 'e', 'ь' => 'ue', 'т' => 'o',
'ē' => 'e', 'с' => 'n', 'ń' => 'n', 'ĥ' => 'h', 'ĝ' => 'g', 'đ' => 'd', 'ĵ' => 'j',
'я' => 'y', 'ũ' => 'u', 'ŭ' => 'u', 'ư' => 'u', 'ţ' => 't', 'э' => 'y', 'ő' => 'o',
'в' => 'a', 'ľ' => 'l', 'ẅ' => 'w', 'ż' => 'z', 'ī' => 'i', 'г' => 'a', 'ġ' => 'g',
'ṁ' => 'm', 'ō' => 'o', 'ĩ' => 'i', 'щ' => 'u', 'į' => 'i', 'ź' => 'z', 'б' => 'a',
'ы' => 'u', 'ю' => 'th', 'р' => 'dh', 'ж' => 'ae', 'µ' => 'u', 'ĕ' => 'e',
'А' => 'A', 'Ф' => 'O', 'Ď' => 'D', 'Ḟ' => 'F', 'Л' => 'E', 'Š' => 'S', 'Ơ' => 'O',
'Ă' => 'A', 'Ř' => 'R', 'Ț' => 'T', 'Ň' => 'N', 'Ā' => 'A', 'Ķ' => 'K',
'Ŝ' => 'S', 'Ỳ' => 'Y', 'Ņ' => 'N', 'Ĺ' => 'L', 'Ħ' => 'H', 'Ṗ' => 'P', 'У' => 'O',
'Ъ' => 'U', 'Ě' => 'E', 'Й' => 'E', 'З' => 'C', 'Ẁ' => 'W', 'Ċ' => 'C', 'Х' => 'O',
'Ṡ' => 'S', 'Ш' => 'O', 'Ģ' => 'G', 'Ŧ' => 'T', 'Ș' => 'S', 'Ė' => 'E', 'Ĉ' => 'C',
'Ś' => 'S', 'О' => 'I', 'Ű' => 'U', 'Ć' => 'C', 'Ę' => 'E', 'Ŵ' => 'W', 'Ṫ' => 'T',
'Ū' => 'U', 'Č' => 'C', 'Ц' => 'Oe', 'И' => 'E', 'Ŷ' => 'Y', 'Ą' => 'A', 'Ł' => 'L',
'Ų' => 'U', 'Ů' => 'U', 'Ş' => 'S', 'Ğ' => 'G', 'Ļ' => 'L', 'Ƒ' => 'F', 'Ž' => 'Z',
'Ẃ' => 'W', 'Ḃ' => 'B', 'Е' => 'A', 'М' => 'I', 'П' => 'I', 'Ḋ' => 'D', 'Ť' => 'T',
'Ŗ' => 'R', 'Д' => 'Ae', 'Н' => 'I', 'Ŕ' => 'R', 'К' => 'E', 'Ь' => 'Ue', 'Т' => 'O',
'Ē' => 'E', 'С' => 'N', 'Ń' => 'N', 'Ĥ' => 'H', 'Ĝ' => 'G', 'Đ' => 'D', 'Ĵ' => 'J',
'Ÿ' => 'Y', 'Ũ' => 'U', 'Ŭ' => 'U', 'Ư' => 'U', 'Ţ' => 'T', 'Э' => 'Y', 'Ő' => 'O',
'В' => 'A', 'Ľ' => 'L', 'Ẅ' => 'W', 'Ż' => 'Z', 'Ī' => 'I', 'Г' => 'A', 'Ġ' => 'G',
'Ṁ' => 'M', 'Ō' => 'O', 'Ĩ' => 'I', 'Щ' => 'U', 'Į' => 'I', 'Ź' => 'Z', 'Б' => 'A',
'Ы' => 'U', 'Ю' => 'Th', 'Р' => 'Dh', 'Ж' => 'Ae', 'Ĕ' => 'E',
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'jo',
'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'jj', 'к' => 'k', 'л' => 'l', 'м' => 'm',
'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'kh', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shh', 'ъ' => '',
'ы' => 'y', 'ь' => '', 'э' => 'eh', 'ю' => 'ju', 'я' => 'ja',
'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Jo',
'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Jj', 'К' => 'K', 'Л' => 'L', 'М' => 'M',
'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U',
'Ф' => 'F', 'Х' => 'Kh', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Shh', 'Ъ' => '',
'Ы' => 'Y', 'Ь' => '', 'Э' => 'Eh', 'Ю' => 'Ju', 'Я' => 'Ja',
);


public static function Translite($f)
{
return str_replace(array_keys(self::$UTF8AR), array_values(self::$UTF8AR), $f);
}
}


echo TransliteName::Translite('напишу я полную фигню!!!');
?>


Результат
napishu ja polnuju fignju!!!

Спустя 10 минут, 14 секунд (6.03.2012 - 16:44) JackSaLey написал(а):
Заменил все равно http://localhost/site/семена-d1/регулярные-c1/
напишу я полную фигню - перевелось без проблем

Спустя 5 минут, 46 секунд (6.03.2012 - 16:49) Visman написал(а):
echo  TransliteName::Translite('напишу я полную фигню!!!');

заменил на
echo  TransliteName::Translite('http://localhost/site/семена-d1/регулярные-c1/');


получил
http://localhost/site/semena-d1/reguljarnye-c1/


У тебя может несоотвествия в кодировках?
Функция не понимает, что менять надо?

Спустя 1 минута, 34 секунды (6.03.2012 - 16:51) JackSaLey написал(а):
так выводит http://localhost/site/semena-d1/reguljarnye-c1/ а с базы данных не хочет
Кодировки вроде все стоят как положено BOM везде убрал и везде Юникод (UTF-8)
MySQL utf8_general_ci

Спустя 4 минуты, 11 секунд (6.03.2012 - 16:55) JackSaLey написал(а):
MySQL utf8_general_ci
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.