energine
[ class tree: energine ] [ index: energine ] [ all elements ]

Source for file Translit.class.php

Documentation is available at Translit.class.php

  1. <?php
  2. /**
  3.  * Содержит класс Translit
  4.  *
  5.  * @package energine
  6.  * @subpackage core
  7.  * @author dr.Pavka
  8.  * @copyright Energine 2008
  9.  * @copyright YURiQUE (Yuriy Malchenko) jmalchenko@gmail.com, 2005
  10.  * @version $Id$
  11.  */
  12.  
  13. /**
  14.  * Служебный класс для транслитерации строки
  15.  *
  16.  * @package energine
  17.  * @subpackage core
  18.  * @author dr.Pavka
  19.  * @final
  20.  */
  21. final class Translit{
  22.     /**
  23.      * Укр/Рус символы
  24.      *
  25.      * @var array 
  26.      * @access private
  27.      * @static
  28.      */
  29.     static private $cyr = array(
  30.     'Щ',  'Ш''Ч''Ц','Ю''Я''Ж''А','Б','В','Г','Д','Е','Ё','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х''Ь','Ы','Ъ','Э','Є','Ї','І',
  31.     'щ',  'ш''ч''ц','ю''я''ж''а','б','в','г','д','е','ё','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х''ь','ы','ъ','э','є','ї''і');
  32.  
  33.     /**
  34.      * Латинские соответствия
  35.      *
  36.      * @var array 
  37.      * @access private
  38.      * @static
  39.      */
  40.     static private $lat = array(
  41.     'Shh','Sh','Ch','C','Ju','Ja','Zh','A','B','V','G','D','Je','Jo','Z','I','J','K','L','M','N','O','P','R','S','T','U','F','Kh','Y','Y','','E','Je','Ji','I',
  42.     'shh','sh','ch','c','ju','ja','zh','a','b','v','g','d','je','jo','z','i','j','k','l','m','n','o','p','r','s','t','u','f','kh','y','y','','e','je','ji''i');
  43.  
  44.     /**
  45.      * Приватный конструктор класса
  46.      * не дает создавать объект этого класса
  47.      *
  48.      * @access private
  49.      */
  50.     private function __construct({}
  51.  
  52.     /**
  53.      * Статический метод транслитерации
  54.      *
  55.      * @param string 
  56.      * @return string 
  57.      * @access public
  58.      * @static
  59.      */
  60.  
  61.     static public function transliterate($string$wordSeparator ''$clean false{
  62.         //$str = iconv($encIn, "utf-8", $str);
  63.  
  64.         for($i=0$i<count(self::$cyr)$i++){
  65.             $string str_replace(self::$cyr[$i]self::$lat[$i]$string);
  66.         }
  67.  
  68.         $string preg_replace("/([qwrtpsdfghklzxcvbnmQWRTPSDFGHKLZXCVBNM]+)[jJ]e/""\${1}e"$string);
  69.         $string preg_replace("/([qwrtpsdfghklzxcvbnmQWRTPSDFGHKLZXCVBNM]+)[jJ]/""\${1}y"$string);
  70.         $string preg_replace("/([eyuioaEYUIOA]+)[Kk]h/""\${1}h"$string);
  71.         $string preg_replace("/^kh/""h"$string);
  72.         $string preg_replace("/^Kh/""H"$string);
  73.  
  74.         $string trim($string);
  75.  
  76.         if ($wordSeparator{
  77.             $string str_replace(' '$wordSeparator$string);
  78.             $string preg_replace('/['.$wordSeparator.']{2,}/',''$string);
  79.         }
  80.         
  81.         if ($clean{
  82.             $string strtolower($string);
  83.             $string preg_replace('/[^-_a-z0-9]+/',''$string);
  84.         }
  85.  
  86.         //return iconv("utf-8", $encOut, $str);
  87.  
  88.         return $string;
  89.     }
  90.  
  91. }
В создании документации нам помог: phpDocumentor