Функция преобразования текста в имя для ЧПУ
Написал функции на php и javascript преобразования текста в имя для ЧПУ.
Также тут можно взять готовые массивы символов русского и английского алфавита.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function Name2Url($str) { $en = Array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'); $EN = Array('Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M'); $ru = Array('й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю'); $RU = Array('Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф','Ы','В','А','П','Р','О','Л','Д','Ж','Э','Я','Ч','С','М','И','Т','Ь','Б','Ю'); $ru2en = Array('y','c','u','k','e','n','g','sh','sh','z','h','','f','u','v','a','p','r','o','l','d','zgh','e','ya','ch','s','m','i','t','','b','u'); $RU2EN = Array('Y','C','U','K','E','N','G','Sh','Sh','Z','H','','F','U','V','A','P','R','O','L','D','Zgh','E','YA','CH','S','M','I','T','','B','U'); $digits = Array('0','1','2','3','4','5','6','7','8','9'); $ret=''; for ($i=0; $i<mb_strlen($str,'utf-8'); $i++) { $ch=mb_substr($str,$i,1,'utf-8'); if (!in_array($ch, $en) && !in_array($ch, $EN) && !in_array($ch, $digits)) { if (($key=array_search($ch, $ru))!==false) {$ret .= $ru2en[$key];} elseif (($key=array_search($ch, $RU))!==false) $ret .= $RU2EN[$key]; else $ret .= '_'; } else $ret.=$ch; } return $ret; } |
Тоже самое, но для javascript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
function in_array(needle, haystack, strict) { var found = false, key, strict = !!strict; for (key in haystack) { if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) { found = true; break; } } return found; } function array_search( needle, haystack, strict ) { var strict = !!strict; for(var key in haystack){ if( (strict && haystack[key] === needle) || (!strict && haystack[key] == needle) ){ return key; } } return false; } function Name2Url(str) { var en = Array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'); var EN = Array('Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M'); var ru = Array('й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю'); var RU = Array('Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф','Ы','В','А','П','Р','О','Л','Д','Ж','Э','Я','Ч','С','М','И','Т','Ь','Б','Ю'); var ru2en = Array('y','c','u','k','e','n','g','sh','sh','z','h','','f','u','v','a','p','r','o','l','d','zgh','e','ya','ch','s','m','i','t','','b','u'); var RU2EN = Array('Y','C','U','K','E','N','G','Sh','Sh','Z','H','','F','U','V','A','P','R','O','L','D','Zgh','E','YA','CH','S','M','I','T','','B','U'); var digits = Array('0','1','2','3','4','5','6','7','8','9'); var ret = ''; for (var i=0; i<str.length; i++) { var ch = str.charAt(i); var key=false; if (!in_array(ch, en) && !in_array(ch, EN) && !in_array(ch, digits)) { if ((key=array_search(ch, ru))!==false) {ret += ru2en[key];} else if ((key=array_search(ch, RU))!==false) ret += RU2EN[key]; else ret += '_'; } else ret+=ch; } return ret; } |
Пример использования:
1 2 3 |
<script>alert(Name2Url('Привет Вася!'));</script> |
Теги для поиска в WP: slug, url, slugify
Author: | Tags: /
| Rating:
Leave a Reply