|
Ok!
|
|
|
Ok!
|
---|---|---|---|---|
239 | $category["name"] = "Мимоза"; $category["id"] = 123456; $arParamsTrans = array("replace_space"=>"-","replace_other"=>"-"); $arCatalogSectionFields = array( "ACTIVE" => 'Y', "IBLOCK_ID" => $bitrixCatalogBlockId, "NAME" => $category["name"], "XML_ID" => $category["id"], "IBLOCK_SECTION_ID" => $bitrixSectionId, ); $arCatalogSectionFields["CODE"] = $trans = Cutil::translit($category["name"],"ru",$arParamsTrans); print_r($arCatalogSectionFields); | битрикс, транслит | 300 | Битрикс транслит |
159 | function lat2cyr($s) { $sb = ""; $i = 0; $lc = false; while ($i < strlen($s)) { $ch = substr($s, $i, 1); $lc = ctype_lower($ch); // true/false $ch = mb_strtoupper($ch); if ($ch == 'J') { // Префиксная нотация вначале $i++; // преходим ко второму символу сочетания $ch = strtoupper(substr($s, $i, 1)); switch ($ch) { case 'O': $sb .= ch('Ё', $lc); break; case 'H': if ($i + 1 < strlen($s) && mb_strtoupper(substr($s, $i + 1, 1) == 'H')){ // проверка на постфикс (вариант JHH) $sb .= ch('Ъ', $lc); $i++; // пропускаем постфикс } else{ $sb .= ch('Ь', $lc); } break; case 'U': $sb .= ch('Ю', $lc); break; case 'A': $sb = ch('Я', $lc); break; default: break; } } else if ($i + 1 < strlen($s) && mb_strtoupper(substr($s, $i + 1, 1)) == 'H') { // Постфиксная нотация, требует информации о двух следующих символах. Для потока придется сделать обертку с очередью из трех символов. switch ($ch) { case 'Z': $sb .= ch('Ж', $lc); break; case 'K': $sb .= ch('Х', $lc); break; case 'C': $sb .= ch('Ч', $lc); break; case 'S': if ($i + 2 < strlen($s) && mb_strtoupper(substr($s, $i + 2, 1)) == 'H') { // проверка на двойной постфикс $sb .= ch('Щ', $lc); $i++; // пропускаем первый постфикс } else { $sb .= ch('Ш', $lc); } break; case 'E': $sb .= ch('Э', $lc); break; case 'I': $sb .= ch('Ы', $lc); break; default: break; } $i++; // пропускаем постфикс } else {// одиночные символы switch ($ch) { case 'A': $sb .= ch('А', $lc); break; case 'B': $sb .= ch('Б', $lc); break; case 'V': $sb .= ch('В', $lc); break; case 'G': $sb .= ch('Г', $lc); break; case 'D': $sb .= ch('Д', $lc); break; case 'E': $sb .= ch('Е', $lc); break; case 'Z': $sb .= ch('З', $lc); break; case 'I': $sb .= ch('И', $lc); break; case 'Y': if (mb_strtoupper(substr($s, $i + 1, 1) === ' ')){ // проверка на пробел после Y $sb .= ch('И', $lc); $i++; // пропускаем постфикс } else{ $sb .= ch('Й', $lc); } break; case 'K': $sb .= ch('К', $lc); break; case 'L': $sb .= ch('Л', $lc); break; case 'M': $sb .= ch('М', $lc); break; case 'N': $sb .= ch('Н', $lc); break; case 'O': $sb .= ch('О', $lc); break; case 'P': $sb .= ch('П', $lc); break; case 'R': $sb .= ch('Р', $lc); break; case 'S': $sb .= ch('С', $lc); break; case 'T': $sb .= ch('Т', $lc); break; case 'U': $sb .= ch('У', $lc); break; case 'F': $sb .= ch('Ф', $lc); break; case 'C': $sb .= ch('Ц', $lc); break; default: $sb .= ch($ch, $lc); } } $i++; // переходим к следующему символу } return (string)$sb; } function cyrlat($ch) { switch ($ch) { case 'А': return "A"; case 'Б': return "B"; case 'В': return "V"; case 'Г': return "G"; case 'Д': return "D"; case 'Е': return "E"; case 'Ё': return "JO"; case 'Ж': return "ZH"; case 'З': return "Z"; case 'И': return "I"; case 'Й': return "Y"; case 'К': return "K"; case 'Л': return "L"; case 'М': return "M"; case 'Н': return "N"; case 'О': return "O"; case 'П': return "P"; case 'Р': return "R"; case 'С': return "S"; case 'Т': return "T"; case 'У': return "U"; case 'Ф': return "F"; case 'Х': return "KH"; case 'Ц': return "C"; case 'Ч': return "CH"; case 'Ш': return "SH"; case 'Щ': return "SHH"; case 'Ъ': return "JHH"; case 'Ы': return "IH"; case 'Ь': return "JH"; case 'Э': return "EH"; case 'Ю': return "JU"; case 'Я': return "JA"; default: return $ch; } } function cyr2lat($s) { $sb = ""; $ch = preg_split('//u', $s, null, PREG_SPLIT_NO_EMPTY); for ($i = 0; $i < count($ch); $i++) { $lc = preg_match('~^p{Lu}~u', $ch[$i]) ? 0 : 1; $v = $ch[$i]; $l = mb_strtoupper($v); $c = cyrlat($l); $lat = ch($c, $lc); $sb .= $lat; } return $sb; } /** * Вспомогательная функция для восстановления регистра */ function ch($ch, $tolower) { return $tolower ? mb_strtolower($ch) : mb_strtoupper($ch); } echo cyr2lat("провинции Арма") . " "; echo lat2cyr("Provinces of Lightness") . " "; | транслит, ретранслит | 100 | Транслит русско-латинский, латинско-русский |
147 | $r = str_replace("ʹ", "", transliterator_transliterate('Any-Latin; Latin-ASCII', "Пробежаться на травалотре")); echo $r; | транслитератор, php, translit | 1470 | Транслитератор на php |
54 | //Если с английского на русский, то передаём вторым параметром true. var transliterate = ( function() { var rus = "щ ш ч ц ю я ё ж ъ ы э а б в г д е з и й к л м н о п р с т у ф х ь".split(/ +/g), eng = "shh sh ch cz yu ya yo zh `` y e a b v g d e z i j k l m n o p r s t u f x ``".split(/ +/g); return function(text, engToRus) { var x; for(x = 0; x < rus.length; x++) { text = text.split(engToRus ? eng[x] : rus[x]).join(engToRus ? rus[x] : eng[x]); text = text.split(engToRus ? eng[x].toUpperCase() : rus[x].toUpperCase()).join(engToRus ? rus[x].toUpperCase() : eng[x].toUpperCase()); } return text; } } )(); | транслит, translit, латинский-русский, lat-cyr, javascript, js | 350 | Транслитерация с английского в русский Яваскрипт |
1 | function rus2translit($string) { $converter = array( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ь' => 'j', 'ы' => 'y', 'ъ' => 'j', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch', 'Ь' => 'j', 'Ы' => 'Y', 'Ъ' => 'j', 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya', ' ' => '_', '№' => 'No' ); return strtr($string, $converter); } function str2url($str) { $str = rus2translit($str); $str = strtolower($str); $str = preg_replace('~[^-a-z0-9_]+~u', '-', $str); $str = trim($str, "-"); return $str; } | translit, транслит, php | 15 | Транслит |