Advertisement
Guest User

Untitled

a guest
May 22nd, 2014
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.91 KB | None | 0 0
  1. class Slug {
  2. public static function my_str_split($string) {
  3. $slen = strlen($string);
  4. for ($i = 0; $i < $slen; $i++) {
  5. $sArray[$i] = $string{$i};
  6. }
  7. return $sArray;
  8. }
  9.  
  10. public static function noDiacritics($string) {
  11. //cyrylic transcription
  12. $cyrylicFrom = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
  13. $cyrylicTo = array('A', 'B', 'W', 'G', 'D', 'Ie', 'Io', 'Z', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'Ch', 'C', 'Tch', 'Sh', 'Shtch', '', 'Y', '', 'E', 'Iu', 'Ia', 'a', 'b', 'w', 'g', 'd', 'ie', 'io', 'z', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'ch', 'c', 'tch', 'sh', 'shtch', '', 'y', '', 'e', 'iu', 'ia');
  14.  
  15.  
  16. $from = array("Á", "À", "Â", "Ä", "Ă", "Ā", "Ã", "Å", "Ą", "Æ", "Ć", "Ċ", "Ĉ", "Č", "Ç", "Ď", "Đ", "Ð", "É", "È", "Ė", "Ê", "Ë", "Ě", "Ē", "Ę", "Ə", "Ġ", "Ĝ", "Ğ", "Ģ", "á", "à", "â", "ä", "ă", "ā", "ã", "å", "ą", "æ", "ć", "ċ", "ĉ", "č", "ç", "ď", "đ", "ð", "é", "è", "ė", "ê", "ë", "ě", "ē", "ę", "ə", "ġ", "ĝ", "ğ", "ģ", "Ĥ", "Ħ", "I", "Í", "Ì", "İ", "Î", "Ï", "Ī", "Į", "IJ", "Ĵ", "Ķ", "Ļ", "Ł", "Ń", "Ň", "Ñ", "Ņ", "Ó", "Ò", "Ô", "Ö", "Õ", "Ő", "Ø", "Ơ", "Œ", "ĥ", "ħ", "ı", "í", "ì", "i", "î", "ï", "ī", "į", "ij", "ĵ", "ķ", "ļ", "ł", "ń", "ň", "ñ", "ņ", "ó", "ò", "ô", "ö", "õ", "ő", "ø", "ơ", "œ", "Ŕ", "Ř", "Ś", "Ŝ", "Š", "Ş", "Ť", "Ţ", "Þ", "Ú", "Ù", "Û", "Ü", "Ŭ", "Ū", "Ů", "Ų", "Ű", "Ư", "Ŵ", "Ý", "Ŷ", "Ÿ", "Ź", "Ż", "Ž", "ŕ", "ř", "ś", "ŝ", "š", "ş", "ß", "ť", "ţ", "þ", "ú", "ù", "û", "ü", "ŭ", "ū", "ů", "ų", "ű", "ư", "ŵ", "ý", "ŷ", "ÿ", "ź", "ż", "ž");
  17. $to = array("A", "A", "A", "A", "A", "A", "A", "A", "A", "AE", "C", "C", "C", "C", "C", "D", "D", "D", "E", "E", "E", "E", "E", "E", "E", "E", "G", "G", "G", "G", "G", "a", "a", "a", "a", "a", "a", "a", "a", "a", "ae", "c", "c", "c", "c", "c", "d", "d", "d", "e", "e", "e", "e", "e", "e", "e", "e", "g", "g", "g", "g", "g", "H", "H", "I", "I", "I", "I", "I", "I", "I", "I", "IJ", "J", "K", "L", "L", "N", "N", "N", "N", "O", "O", "O", "O", "O", "O", "O", "O", "CE", "h", "h", "i", "i", "i", "i", "i", "i", "i", "i", "ij", "j", "k", "l", "l", "n", "n", "n", "n", "o", "o", "o", "o", "o", "o", "o", "o", "o", "R", "R", "S", "S", "S", "S", "T", "T", "T", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "W", "Y", "Y", "Y", "Z", "Z", "Z", "r", "r", "s", "s", "s", "s", "B", "t", "t", "b", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "w", "y", "y", "y", "z", "z", "z");
  18.  
  19.  
  20. $from = array_merge($from, $cyrylicFrom);
  21. $to = array_merge($to, $cyrylicTo);
  22.  
  23. $newstring = str_replace($from, $to, $string);
  24. return $newstring;
  25. }
  26.  
  27. public static function makeSlugs($string, $maxlen = 0) {
  28. $newStringTab = array();
  29. $string = strtolower(self :: noDiacritics($string));
  30. if (function_exists('str_split')) {
  31. $stringTab = str_split($string);
  32. } else {
  33. $stringTab = self :: my_str_split($string);
  34. }
  35.  
  36. $numbers = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-");
  37. //$numbers=array("0","1","2","3","4","5","6","7","8","9");
  38.  
  39. foreach ($stringTab as $letter) {
  40. if (in_array($letter, range("a", "z")) || in_array($letter, $numbers)) {
  41. $newStringTab[] = $letter;
  42. //print($letter);
  43. } elseif ($letter == " ") {
  44. $newStringTab[] = "-";
  45. }
  46. }
  47.  
  48. if (count($newStringTab)) {
  49. $newString = implode($newStringTab);
  50. if ($maxlen > 0) {
  51. $newString = substr($newString, 0, $maxlen);
  52. }
  53.  
  54. $newString = self :: removeDuplicates('--', '-', $newString);
  55. } else {
  56. $newString = '';
  57. }
  58.  
  59. return $newString;
  60. }
  61.  
  62. public static function checkSlug($sSlug) {
  63. if (ereg("^[a-zA-Z0-9]+[a-zA-Z0-9\_\-]*$", $sSlug)) {
  64. return true;
  65. }
  66.  
  67. return false;
  68. }
  69.  
  70. public static function removeDuplicates($sSearch, $sReplace, $sSubject) {
  71. $i = 0;
  72. do {
  73.  
  74. $sSubject = str_replace($sSearch, $sReplace, $sSubject);
  75. $pos = strpos($sSubject, $sSearch);
  76.  
  77. $i++;
  78. if ($i > 100) {
  79. die('removeDuplicates() loop error');
  80. }
  81. } while ($pos !== false);
  82.  
  83. return $sSubject;
  84. }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement