транслитерация ЧПУ

Статус
В этой теме нельзя размещать новые ответы.

Shady07

Постоялец
Регистрация
19 Май 2008
Сообщения
51
Реакции
14
Доброго всем времени суток. Я сделал на сайте обычное ЧПУ, т.е. вида Для просмотра ссылки Войди или Зарегистрируйся Хотелось бы видеть русские символы вместо транслита. Погуглил, нашол инфу, где это вроде можно изменить, залез в файл utils.php, вот кусок кода:
PHP:
function utils_makeUrlFriendly($input)
{
	$trans=array(
		"А" => "A",
		"Б" => "B",
		"В" => "V",
		"Г" => "G",
		"Д" => "D",
		"Е" => "E",
		"Ё" => "YO",
		"Ж" => "ZH",
		"З" => "Z",
		"И" => "I",
		"Й" => "J",
		"К" => "K",
		"Л" => "L",
		"М" => "M",
		"Н" => "N",
		"О" => "O",
		"П" => "P",
		"Р" => "R",
		"С" => "S",
		"Т" => "T",
		"У" => "U",
		"Ф" => "F",
		"Х" => "H",
		"Ц" => "TS",
		"Ч" => "CH",
		"Ш" => "SH",
		"Щ" => "SCH",
		"Ъ" => "",
		"Ы" => "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",
		"х" => "h",
		"ц" => "ts",
		"ч" => "ch",
		"ш" => "sh",
		"щ" => "sch",
		"ъ" => "",
		"ы" => "y",
		"ь" => "",
		"э" => "e",
		"ю" => "yu",
		"я" => "ya",
		"№" => "No.",
		//ukranian symbols added
		'Ї' => 'I',
		'І' => 'I',
		'Є' => 'E',
		'ї' => 'i',
		'і' => 'i',
		'є' => 'e',
		);
	$input=strtr($input, $trans);
	return $input;
}
function makeUrlFriendly($input, $isPage=false) {
	global $db;
	//$input = remove_error_creating_chars($input);
	$output = utf8_substr($input, 0, 240);
	$output = utf8_strtolower($output);
	$output = trim($output);	
	$output = html_entity_decode(htmlentities($output, ENT_COMPAT, 'UTF-8'));
	$output = preg_replace("/\s/e" , "_" , $output); 	// Replace spaces with underscores
	$output = str_replace("--", "-", $output); 	 
	$output = str_replace("/", "", $output);
	$output = str_replace("\\", "", $output);
	$output = str_replace("'", "", $output); 	 
	$output = str_replace(",", "", $output); 	 
	$output = str_replace(";", "", $output); 	 
	$output = str_replace(":", "", $output); 	 
	$output = str_replace(".", "-", $output); 	 
	$output = str_replace("?", "", $output); 	 
	$output = str_replace("=", "-", $output); 	 
	$output = str_replace("+", "", $output); 	 
	$output = str_replace("$", "", $output); 	 
	$output = str_replace("&", "", $output); 	 
	$output = str_replace("!", "", $output); 	 
	$output = str_replace(">>", "-", $output); 	 
	$output = str_replace(">", "-", $output); 	 
	$output = str_replace("<<", "-", $output); 	 
	$output = str_replace("<", "-", $output); 	 
	$output = str_replace("*", "", $output); 	 
	$output = str_replace(")", "", $output); 	 
	$output = str_replace("(", "", $output);
	$output = str_replace("[", "", $output);
	$output = str_replace("]", "", $output);
	$output = str_replace("^", "", $output);
	$output = str_replace("%", "", $output);
	$output = str_replace("»", "-", $output);
	$output = str_replace("|", "", $output);
	$output = str_replace("#", "", $output);
	$output = str_replace("@", "", $output);
	$output = str_replace("`", "", $output);
	$output = str_replace("”", "", $output);
	$output = str_replace("“", "", $output);
	$output = str_replace("\"", "", $output);
	$output = str_replace("_", "-", $output);  	 
	if(function_exists('utils_makeUrlFriendly')) {
		$output = utils_makeUrlFriendly($output);
	}
подскажите, где что нужно подправить/изменить? И надо ли в .htaccess что-либо добавлять?
 
Закоментируй первую функцию (utils_makeUrlFriendly) и будут у тебя урлы не транслитом, а русским :)

В .htaccess скорее всего ничего менять не нужно, но возможно понадобится поменять в index.php

Если так не заработает, кинь сюда свой .htaccess, будем разбираться дальше
 
В php есть функции Для просмотра ссылки Войди или Зарегистрируйся и Для просмотра ссылки Войди или Зарегистрируйся

Входящий запрос преобразуешь с помощью urldecode.
Url всех ссылок с русскими буквами надо преобразовывать с помощью urlencode.
 
Заметь, что не все браузеры правильно понимают русские символы в адресной строке.
Может так получиться, что в адресной строке русские символы будут url-кодированы типа Для просмотра ссылки Войди или Зарегистрируйся, либо, как в FF3.5, ссылки будут преобразованы к такому виду, если их скопировать в буфер обмена.

Поэтому, я предпочитаю, чтобы ссылки были транслитом (переведенным по одному из гостов), тогда никаких проблем не возникает — url всегда красив. А поисковые систему умеют подсвечивать ключевые слова в url даже если они транслитом в url. Для просмотра ссылки Войди или Зарегистрируйся

UPD:
Кстати, а что это за движок? Самописный?
 
Заметь, что не все браузеры правильно понимают русские символы в адресной строке.
Может так получиться, что в адресной строке русские символы будут url-кодированы типа Для просмотра ссылки Войди или Зарегистрируйся, либо, как в FF3.5, ссылки будут преобразованы к такому виду, если их скопировать в буфер обмена.
Поэтому, я предпочитаю, чтобы ссылки были транслитом (переведенным по одному из гостов), тогда никаких проблем не возникает — url всегда красив. А поисковые систему умеют подсвечивать ключевые слова в url даже если они транслитом в url. Для просмотра ссылки Войди или Зарегистрируйся
UPD:
Кстати, а что это за движок? Самописный?

Ага, я тоже это заметил, в опере, что в линке %-знаки есть. Так что обратно на транслит перейду, благо пока тестирую систему. Движок Pligg CMS, по типу digg.com.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху