Source for file transliterate.php

Documentation is available at transliterate.php

  1. <?php
  2. /**
  3.  * @package     Joomla.Platform
  4.  * @subpackage  Language
  5.  *
  6.  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
  7.  * @license     GNU General Public License version 2 or later; see LICENSE
  8.  */
  9.  
  10. defined('JPATH_PLATFORM'or die;
  11.  
  12. /**
  13.  * Class to transliterate strings
  14.  *
  15.  * @package     Joomla.Platform
  16.  * @subpackage  Language
  17.  * @since       11.1
  18.  * @note        Port of phputf8's utf8_accents_to_ascii()
  19.  */
  20. {
  21.     /**
  22.      * Returns strings transliterated from UTF-8 to Latin
  23.      *
  24.      * @param   string   $string  String to transliterate
  25.      * @param   boolean  $case    Optionally specify upper or lower case. Default to null.
  26.      *
  27.      * @return  string  Transliterated string
  28.      *
  29.      * @since   11.1
  30.      */
  31.     public static function utf8_latin_to_ascii($string$case 0)
  32.     {
  33.         static $UTF8_LOWER_ACCENTS null;
  34.         static $UTF8_UPPER_ACCENTS null;
  35.  
  36.         if ($case <= 0)
  37.         {
  38.             if (is_null($UTF8_LOWER_ACCENTS))
  39.             {
  40.                 $UTF8_LOWER_ACCENTS array(
  41.                     'à' => 'a',
  42.                     'ô' => 'o',
  43.                     'ď' => 'd',
  44.                     'ḟ' => 'f',
  45.                     'ë' => 'e',
  46.                     'š' => 's',
  47.                     'ơ' => 'o',
  48.                     'ß' => 'ss',
  49.                     'ă' => 'a',
  50.                     'ř' => 'r',
  51.                     'ț' => 't',
  52.                     'ň' => 'n',
  53.                     'ā' => 'a',
  54.                     'ķ' => 'k',
  55.                     'ŝ' => 's',
  56.                     'ỳ' => 'y',
  57.                     'ņ' => 'n',
  58.                     'ĺ' => 'l',
  59.                     'ħ' => 'h',
  60.                     'ṗ' => 'p',
  61.                     'ó' => 'o',
  62.                     'ú' => 'u',
  63.                     'ě' => 'e',
  64.                     'é' => 'e',
  65.                     'ç' => 'c',
  66.                     'ẁ' => 'w',
  67.                     'ċ' => 'c',
  68.                     'õ' => 'o',
  69.                     'ṡ' => 's',
  70.                     'ø' => 'o',
  71.                     'ģ' => 'g',
  72.                     'ŧ' => 't',
  73.                     'ș' => 's',
  74.                     'ė' => 'e',
  75.                     'ĉ' => 'c',
  76.                     'ś' => 's',
  77.                     'î' => 'i',
  78.                     'ű' => 'u',
  79.                     'ć' => 'c',
  80.                     'ę' => 'e',
  81.                     'ŵ' => 'w',
  82.                     'ṫ' => 't',
  83.                     'ū' => 'u',
  84.                     'č' => 'c',
  85.                     'ö' => 'oe',
  86.                     'è' => 'e',
  87.                     'ŷ' => 'y',
  88.                     'ą' => 'a',
  89.                     'ł' => 'l',
  90.                     'ų' => 'u',
  91.                     'ů' => 'u',
  92.                     'ş' => 's',
  93.                     'ğ' => 'g',
  94.                     'ļ' => 'l',
  95.                     'ƒ' => 'f',
  96.                     'ž' => 'z',
  97.                     'ẃ' => 'w',
  98.                     'ḃ' => 'b',
  99.                     'å' => 'a',
  100.                     'ì' => 'i',
  101.                     'ï' => 'i',
  102.                     'ḋ' => 'd',
  103.                     'ť' => 't',
  104.                     'ŗ' => 'r',
  105.                     'ä' => 'ae',
  106.                     'í' => 'i',
  107.                     'ŕ' => 'r',
  108.                     'ê' => 'e',
  109.                     'ü' => 'ue',
  110.                     'ò' => 'o',
  111.                     'ē' => 'e',
  112.                     'ñ' => 'n',
  113.                     'ń' => 'n',
  114.                     'ĥ' => 'h',
  115.                     'ĝ' => 'g',
  116.                     'đ' => 'd',
  117.                     'ĵ' => 'j',
  118.                     'ÿ' => 'y',
  119.                     'ũ' => 'u',
  120.                     'ŭ' => 'u',
  121.                     'ư' => 'u',
  122.                     'ţ' => 't',
  123.                     'ý' => 'y',
  124.                     'ő' => 'o',
  125.                     'â' => 'a',
  126.                     'ľ' => 'l',
  127.                     'ẅ' => 'w',
  128.                     'ż' => 'z',
  129.                     'ī' => 'i',
  130.                     'ã' => 'a',
  131.                     'ġ' => 'g',
  132.                     'ṁ' => 'm',
  133.                     'ō' => 'o',
  134.                     'ĩ' => 'i',
  135.                     'ù' => 'u',
  136.                     'į' => 'i',
  137.                     'ź' => 'z',
  138.                     'á' => 'a',
  139.                     'û' => 'u',
  140.                     'þ' => 'th',
  141.                     'ð' => 'dh',
  142.                     'æ' => 'ae',
  143.                     'µ' => 'u',
  144.                     'ĕ' => 'e',
  145.                     'œ' => 'oe');
  146.             }
  147.  
  148.             $string str_replace(array_keys($UTF8_LOWER_ACCENTS)array_values($UTF8_LOWER_ACCENTS)$string);
  149.         }
  150.  
  151.         if ($case >= 0)
  152.         {
  153.             if (is_null($UTF8_UPPER_ACCENTS))
  154.             {
  155.                 $UTF8_UPPER_ACCENTS array(
  156.                     'À' => 'A',
  157.                     'Ô' => 'O',
  158.                     'Ď' => 'D',
  159.                     'Ḟ' => 'F',
  160.                     'Ë' => 'E',
  161.                     'Š' => 'S',
  162.                     'Ơ' => 'O',
  163.                     'Ă' => 'A',
  164.                     'Ř' => 'R',
  165.                     'Ț' => 'T',
  166.                     'Ň' => 'N',
  167.                     'Ā' => 'A',
  168.                     'Ķ' => 'K',
  169.                     'Ŝ' => 'S',
  170.                     'Ỳ' => 'Y',
  171.                     'Ņ' => 'N',
  172.                     'Ĺ' => 'L',
  173.                     'Ħ' => 'H',
  174.                     'Ṗ' => 'P',
  175.                     'Ó' => 'O',
  176.                     'Ú' => 'U',
  177.                     'Ě' => 'E',
  178.                     'É' => 'E',
  179.                     'Ç' => 'C',
  180.                     'Ẁ' => 'W',
  181.                     'Ċ' => 'C',
  182.                     'Õ' => 'O',
  183.                     'Ṡ' => 'S',
  184.                     'Ø' => 'O',
  185.                     'Ģ' => 'G',
  186.                     'Ŧ' => 'T',
  187.                     'Ș' => 'S',
  188.                     'Ė' => 'E',
  189.                     'Ĉ' => 'C',
  190.                     'Ś' => 'S',
  191.                     'Î' => 'I',
  192.                     'Ű' => 'U',
  193.                     'Ć' => 'C',
  194.                     'Ę' => 'E',
  195.                     'Ŵ' => 'W',
  196.                     'Ṫ' => 'T',
  197.                     'Ū' => 'U',
  198.                     'Č' => 'C',
  199.                     'Ö' => 'Oe',
  200.                     'È' => 'E',
  201.                     'Ŷ' => 'Y',
  202.                     'Ą' => 'A',
  203.                     'Ł' => 'L',
  204.                     'Ų' => 'U',
  205.                     'Ů' => 'U',
  206.                     'Ş' => 'S',
  207.                     'Ğ' => 'G',
  208.                     'Ļ' => 'L',
  209.                     'Ƒ' => 'F',
  210.                     'Ž' => 'Z',
  211.                     'Ẃ' => 'W',
  212.                     'Ḃ' => 'B',
  213.                     'Å' => 'A',
  214.                     'Ì' => 'I',
  215.                     'Ï' => 'I',
  216.                     'Ḋ' => 'D',
  217.                     'Ť' => 'T',
  218.                     'Ŗ' => 'R',
  219.                     'Ä' => 'Ae',
  220.                     'Í' => 'I',
  221.                     'Ŕ' => 'R',
  222.                     'Ê' => 'E',
  223.                     'Ü' => 'Ue',
  224.                     'Ò' => 'O',
  225.                     'Ē' => 'E',
  226.                     'Ñ' => 'N',
  227.                     'Ń' => 'N',
  228.                     'Ĥ' => 'H',
  229.                     'Ĝ' => 'G',
  230.                     'Đ' => 'D',
  231.                     'Ĵ' => 'J',
  232.                     'Ÿ' => 'Y',
  233.                     'Ũ' => 'U',
  234.                     'Ŭ' => 'U',
  235.                     'Ư' => 'U',
  236.                     'Ţ' => 'T',
  237.                     'Ý' => 'Y',
  238.                     'Ő' => 'O',
  239.                     'Â' => 'A',
  240.                     'Ľ' => 'L',
  241.                     'Ẅ' => 'W',
  242.                     'Ż' => 'Z',
  243.                     'Ī' => 'I',
  244.                     'Ã' => 'A',
  245.                     'Ġ' => 'G',
  246.                     'Ṁ' => 'M',
  247.                     'Ō' => 'O',
  248.                     'Ĩ' => 'I',
  249.                     'Ù' => 'U',
  250.                     'Į' => 'I',
  251.                     'Ź' => 'Z',
  252.                     'Á' => 'A',
  253.                     'Û' => 'U',
  254.                     'Þ' => 'Th',
  255.                     'Ð' => 'Dh',
  256.                     'Æ' => 'Ae',
  257.                     'Ĕ' => 'E',
  258.                     'Œ' => 'Oe');
  259.             }
  260.             $string str_replace(array_keys($UTF8_UPPER_ACCENTS)array_values($UTF8_UPPER_ACCENTS)$string);
  261.         }
  262.  
  263.         return $string;
  264.     }
  265. }

Documentation generated on Tue, 19 Nov 2013 15:16:00 +0100 by phpDocumentor 1.4.3