|
|
|
| Доброго времени суток.
Есть скрипт которые работает с чпу которые берется из названия статьи через функцию транслита!
Функция:
<?php
function TranslitName($string)
{
$slash = "";
static $LettersFrom = "абвгдезиклмнопрстуфыэйхё";
static $LettersTo = "abvgdeziklmnoprstufyejhe";
static $Consonant = "бвгджзйклмнпрстфхцчшщ";
static $Vowel = "аеёиоуыэюя";
static $BiLetters = array(
"ж" => "zh", "ц"=>"ts", "ч" => "ch",
"ш" => "sh", "щ" => "sch", "ю" => "ju", "я" => "ja",
);
$string = preg_replace("/[_\s\.,?!\[\](){}]+/", "_", $string);
$string = preg_replace("/-{2,}/", "--", $string);
$string = preg_replace("/_-+_/", "--", $string);
$string = preg_replace("/[_\-]+$/", "", $string);
$string = strtolower( $string );
//here we replace ъ/ь
$string = preg_replace("/(ь|ъ)([".$Vowel."])/", "j\\2", $string);
$string = preg_replace("/(ь|ъ)/", "", $string);
//transliterating
$string = strtr($string, $LettersFrom, $LettersTo );
$string = strtr($string, $BiLetters );
$string = preg_replace("/j{2,}/", "j", $string);
$string = preg_replace("/[^".$slash."0-9a-z_\-]+/", "", $string);
return $string;
}
?>
|
Дома на денвере работает на ура! Но после того как залил на хост функция вместо русских букв возвращает пустоту и все.....
Латиница и цифры проходят
В чем грабли? | |
|
|
|
|
|
|
|
для: Sywooch
(26.07.2007 в 16:42)
| | какая кодировка у файла? | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2007 в 16:45)
| | Вот этого я не знаю :)
Все пишу в PSPad
Запустите пожалуйста у себя если можно:
<?
function TranslitName($string)
{
$slash = "";
static $LettersFrom = "абвгдезиклмнопрстуфыэйхё";
static $LettersTo = "abvgdeziklmnoprstufyejhe";
static $Consonant = "бвгджзйклмнпрстфхцчшщ";
static $Vowel = "аеёиоуыэюя";
static $BiLetters = array(
"ж" => "zh", "ц"=>"ts", "ч" => "ch",
"ш" => "sh", "щ" => "sch", "ю" => "ju", "я" => "ja",
);
$string = preg_replace("/[_\s\.,?!\[\](){}]+/", "_", $string);
$string = preg_replace("/-{2,}/", "--", $string);
$string = preg_replace("/_-+_/", "--", $string);
$string = preg_replace("/[_\-]+$/", "", $string);
$string = strtolower( $string );
//here we replace ъ/ь
$string = preg_replace("/(ь|ъ)([".$Vowel."])/", "j\\2", $string);
$string = preg_replace("/(ь|ъ)/", "", $string);
//transliterating
$string = strtr($string, $LettersFrom, $LettersTo );
$string = strtr($string, $BiLetters );
$string = preg_replace("/j{2,}/", "j", $string);
$string = preg_replace("/[^".$slash."0-9a-z_\-]+/", "", $string);
return $string;
}
echo TranslitName('работает?');
?>
|
Что вернет интересно :) | |
|
|
|
|
|
|
|
для: Sywooch
(26.07.2007 в 16:51)
| | Вот нашел скриптик немного доработал, пока работает, что скажете???
<?
function trans($name)
{
$symbs = array
("à" => "a","á" => "b","â"
=> "v","ã" => "g","ä" => "d",
"å" => "e","¸" => "e",
"æ" => "zh","ç" => "z","è"
=> "i","é" => "j","ê" => "k",
"ë" => "l","ì" => "m","í" =>
"n",
"î" => "o","ï" => "p","ð" =>
"r","ñ" => "s","ò" => "t",
"ó" => "u","ô" => "f","õ" => "h",
"ö" => "ts","÷" => "ch","ø" => "sh","ù" => "sch","ú" => "",
"û" => "y","ü" => "","ý" =>
"e",
"þ" => "yu","ÿ" => "ya"," " =>
"_","-"=>"_","'"=>"","=" => "","+" => "","%" => "","^" => "",
"&" => "","*" => "",'"' => "","@" => "","$"
=> "",";" => "",":" => "","`" => "","~" => "");
return strtr((mb_convert_case($name, MB_CASE_LOWER, "CP1251")),$symbs);
}
?>
|
| |
|
|
|
|
|
|
|
для: Sywooch
(26.07.2007 в 16:51)
| | Возвращает
| |
|
|
|
|
|
|
|
для: Faraon
(26.07.2007 в 17:43)
| | Скорее всего это был конфликт версий РНР дома рнр4 на хостинге рнр5... | |
|
|
|
|
|
|
|
для: Sywooch
(26.07.2007 в 18:51)
| | Вот окончательная версия:
<?
function TranslitName($content) {
$transA = array('А' => 'a', 'Б' => 'b',
'В' => 'v', 'Г' => 'h', 'Ґ' => 'g',
'Д' => 'd', 'Е' => 'e', 'Ё' => 'jo',
'Є' => 'e', 'Ж' => 'zh', 'З' => 'z',
'И' => 'i', 'І' => 'i', 'Й' => 'i',
'Ї' => 'i', 'К' => 'k', 'Л' => 'l',
'М' => 'm', 'Н' => 'n', 'О' => 'o',
'П' => 'p', 'Р' => 'r', 'С' => 's',
'Т' => 't', 'У' => 'u', 'Ў' => 'u',
'Ф' => 'f', 'Х' => 'h', 'Ц' => 'c',
'Ч' => 'ch', 'Ш' => 'sh', 'Щ' => 'sz',
'Ъ' => '', 'Ы' => 'y', 'Ь' => '',
'Э' => 'e', 'Ю' => 'yu', 'Я' => 'ya');
$transB = array('а' => 'a', 'б' => 'b',
'в' => 'v', 'г' => 'g', 'ґ' => 'g',
'д' => 'd', 'е' => 'e', 'ё' => 'jo',
'є' => 'e', 'ж' => 'zh', 'з' => 'z',
'и' => 'i', 'і' => 'i', 'й' => 'i',
'ї' => 'i', 'к' => 'k', 'л' => 'l',
'м' => 'm', 'н' => 'n', 'о' => 'o',
'п' => 'p', 'р' => 'r', 'с' => 's',
'т' => 't', 'у' => 'u', 'ў' => 'u',
'ф' => 'f', 'х' => 'h', 'ц' => 'c',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sz',
'ъ' => '', 'ы' => 'y', 'ь' => '',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
'"' => '', '&' => '',
'µ' => 'u', '№' => '');
$content = trim(strip_tags($content));
$content = strtr($content, $transA);
$content = strtr($content, $transB);
$content = preg_replace("/\s+/ms", "_", $content);
$content = preg_replace("/[ ]+/", "_", $content);
$content = preg_replace("/[^a-z0-9_]+/mi", "", $content);
return $content;
}
?>
|
| |
|
|
|
|