Ratibor |
|
---|---|
Вставлю свои 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;
}
Не задавай глупых вопросов, не услышишь вранья.
|