Forums / National / Russian / Бета -впечатления.

Ratibor
#2603 2008-12-25 04:21
Вставлю свои 5 коп. по поводу тэгов :)
С анлийскими тэгами вроде все нормально,
русские вроде тоже работают, но вот как выглядят ссылки :(
plug.php?e=tags&a=pages&t=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82
ИМХО не есть гуд.
Может стоит применять к русским тэгам транслитерацию ?

Вот к примеру как в MemHT зделано:
function mem_urlencode($str) {
	global $langdata;
	
	if (isset($langdata['url_pat']) AND @sizeof($langdata['url_pat']) == @sizeof($langdata['url_rep'])) {
		$str = preg_replace($langdata['url_pat'],$langdata['url_rep'],$str);
	}	
	 $alias = preg_replace('/&#x([0-9a-f]{1,7});/ei', 'chr(hexdec("\\1"))', $str);
 $alias = preg_replace('/&#([0-9]{1,7});/e', 'chr("\\1")', $alias);

if (preg_match("/[а-яё]+/i",$alias)) {

 static $replace_array = array(
 
 'а' => 'a',   'б' => 'b',   'в' => 'v',
  'г' => 'g',   'д' => 'd',   'е' => 'e',
  'ё' => '2',   'ж' => '9',  'з' => 'z',
  'и' => 'i',   'й' => 'y',   'к' => 'k',
  'л' => 'l',   'м' => 'm',   'н' => 'n',
  'о' => 'o',   'п' => 'p',   'р' => 'r',
  'с' => 's',   'т' => 't',   'у' => 'u',
  'ф' => 'f',   'х' => 'h',   'ц' => 'c',
  'ч' => '4',  'ш' => '3',  'щ' => '6',
  'ь' => 'w',  'ы' => '7',   'ъ' => 'q',
  'э' => '5',   'ю' => '0',  'я' => '8',
  
  'А' => 'A',   'Б' => 'B',   'В' => 'V',
  'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
  'Ё' => '2-',   'Ж' => '9-',  'З' => 'Z',
  'И' => 'I',   'Й' => 'Y',   'К' => 'K',
  'Л' => 'L',   'М' => 'M',   'Н' => 'N',
  'О' => 'O',   'П' => 'P',   'Р' => 'R',
  'С' => 'S',   'Т' => 'T',   'У' => 'U',
  'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
  'Ч' => '4-',  'Ш' => '3-',  'Щ' => '6-',
  'Ь' => 'W',  'Ы' => '7-',   'Ъ' => 'Q',
  'Э' => '5-',   'Ю' => '0-',  'Я' => '8-',
 
  '&' => 'and','\'' => ''
 );
 $alias = strtr($alias, $replace_array);

 $alias = strip_tags($alias); // strip HTML
 $alias = preg_replace('/[^\.%A-Za-z0-9 _-]/', '', $alias); // strip non-alphanumeric characters
 $alias = preg_replace('/\s+/', '-', $alias); // convert white-space to dash
 $alias = preg_replace('/-+/', '-', $alias);  // convert multiple dashes to one
 $alias = trim($alias, '-'); // trim excess
  $str = 'ru-'.$alias;}
	return urlencode($str);

}
function mem_deurlencode($str) {
	global $langdata;
	
	if (isset($langdata['url_pat']) AND @sizeof($langdata['url_pat']) == @sizeof($langdata['url_rep'])) {
		$str = preg_replace($langdata['url_pat'],$langdata['url_rep'],$str);
	}	
 // Convert all numeric entities to their actual character
 $alias = preg_replace('/&#x([0-9a-f]{1,7});/ei', 'chr(hexdec("\\1"))', $str);
 $alias = preg_replace('/&#([0-9]{1,7});/e', 'chr("\\1")', $alias);

if (preg_match ("/\bru-\b/", $alias)) {
 static $replace_array = array(
  'ru-'=>'',
  'a'=>'а' ,   'b'=>'б' ,   'v'=>'в',
  'g'=>'г',   'd'=>'д' ,   'e'=>'е'  ,
  '2'=>'ё' ,   '9'=>'ж' ,  'z'=>'з' ,
  'i'=>'и' ,   'y'=>'й' ,   'k'=>'к'  ,
  'l'=>'л' ,   'm'=>'м' ,   'n'=>'н'  ,
  'o'=>'о' ,   'p'=>'п'  ,   'r'=>'р'  ,
  's'=>'с' ,   't'=>'т'  ,   'u'=>'у' ,
  'f'=>'ф' ,   'h'=>'х' ,   'c'=>'ц'  ,
  '4'=>'ч' ,  '3'=>'ш'  ,  '6'=>'щ' ,
  'w'=>'ь' ,  '7'=>'ы'  ,   'q'=>'ъ' ,
  '5'=>'э' ,   '0'=>'ю' ,  '8'=>'я' ,
  
  'A'=>'А' ,   'B'=>'Б' ,   'V'=>'В' ,
  'G'=>'Г' ,   'D'=>'Д' ,   'E'=>'Е' ,
  '2-'=>'Ё' ,   '9'=>'Ж' ,  'Z'=>'З' ,
  'I'=>'И'  ,   'Y'=>'Й' ,   'K'=>'К'  ,
  'L'=>'Л'  ,   'M'=>'М' ,   'N'=>'Н' ,
  'O'=>'О'  ,   'P'=>'П' ,   'R'=>'Р'  ,
  'S'=>'С'  ,   'T'=>'Т' ,   'U'=>'У'  ,
  'F'=>'Ф'  ,   'H'=>'Х' ,   'C'=>'Ц'  ,
  '4-'=>'Ч' ,  '3-'=>'Ш' ,  '6-'=>'Щ'  ,
  'W'=>'Ь' ,  '7-'=>'Ы' ,   'Q'=>'Ъ'  ,
  '5-'=>'Э'  ,   '0-'=>'Ю' ,  '8-'=>'Я'  ,
  
 
 
 
 
  '&' => 'and','\'' => ''
 );
 $alias = strtr($alias, $replace_array);

 $str = trim($alias, '-'); // trim excess
} 

	return $str;
}
Не задавай глупых вопросов, не услышишь вранья.