/** * Create slug from string * * @param string $string * @param string $replacement * @return string */ function slug($string, $replacement = '-') { $string = strtolower_utf($string); $quoted_replacement = preg_quote($replacement, '/'); $map = array('/à|á|å|â|а/' => 'a', '/б/' => 'b', '/в/' => 'v', '/г/' => 'g', '/д/' => 'd', '/ђ|đ/' => 'dj', '/џ/' => 'dz', '/è|é|ê|ẽ|ë/' => 'e', '/ж|ž|з/' => 'z', '/ì|í|î|и/' => 'i', '/ј/' => 'j', '/к/' => 'k', '/л/' => 'l', '/љ/' => 'lj', '/м/' => 'm', '/њ/' => 'nj', '/ò|ó|ô|ø|о/' => 'o', '/п/' => 'p', '/р/' => 'r', '/с|š|ш/' => 's', '/т/' => 't', '/ù|ú|ů|û|у/' => 'u', '/ç|č|ć|ц|ч|ћ/' => 'c', '/ñ|н/' => 'n', '/ф/' => 'f', '/х/' => 'h', '/ä|æ/' => 'ae', '/ö/' => 'oe', '/ü/' => 'ue', '/[^\\w\\s]/u' => ' ', '/\\s+/' => $replacement, "'/^[{$quoted_replacement}]+|[{$quoted_replacement}]+\$/'" => ''); return trim(preg_replace(array_keys($map), array_values($map), $string), '-'); }
function safe_name($text, $use_visual_mode = false) { if (!$text) { return ''; } $text = strtolower_utf($text); $translation_table = array('ā' => 'a', 'č' => 'c', 'ē' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', 'ņ' => 'n', 'ō' => 'o', 'š' => 's', 'ū' => 'u', 'ž' => 'z', 'а' => 'a', 'б' => 'b', 'в' => $use_visual_mode ? 'b' : 'v', 'г' => 'g', 'д' => $use_visual_mode ? 'g' : 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'z', 'з' => $use_visual_mode ? '3' : 'z', 'и' => $use_visual_mode ? 'u' : 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => $use_visual_mode ? 'h' : 'n', 'о' => 'o', 'п' => 'p', 'р' => $use_visual_mode ? 'p' : 'r', 'с' => $use_visual_mode ? 'c' : 's', 'т' => 't', 'у' => $use_visual_mode ? 'y' : 'u', 'ф' => 'f', 'х' => $use_visual_mode ? 'x' : 'h', 'ц' => 'c', 'ч' => 'c', 'ш' => 's', 'щ' => 's', 'ъ' => '', 'ы' => 'i', 'ь' => '', 'э' => 'e', 'ю' => 'u', 'я' => 'j', 'ґ' => 'g', 'і' => 'i', 'ї' => 'i', 'є' => 'e'); $text = strtr($text, $translation_table); $allowed_chars = 'abcdefghijklmnopqrstuvwxyz01234567890_'; $out = ''; for ($i = 0; $i < strlen_utf($text); $i++) { $char = substr_utf($text, $i, 1); if (strlen($char) != 1) { $out .= '_'; } else { if (strpos($allowed_chars, $char) !== FALSE) { $out .= $char; } else { $out .= '_'; } } } $out = trim($out, '_'); $out = preg_replace('/__+/u', '_', $out); $out = preg_replace('/--+/u', '-', $out); if ($out == '') { $out = '_'; } return $out; }
/** * Convert string to tags * * @param string $string * @return array */ function toTags($string) { $string = trim($string); if ($string) { $tags = explode(',', $string); if (is_foreachable($tags)) { foreach ($tags as $k => $v) { $tags[$k] = strtolower_utf(trim($v)); } // foreach return $tags; } // if } // if return array(); }