function gp_sanitize_for_url($name) { $name = trim($name); $name = gp_strtolower($name); $name = preg_replace('/&.+?;/', '', $name); // kill entities $name = str_replace('.', '-', $name); $name = preg_replace('|[#$%&~/.\\-;:=,?@\\[\\]+]|', '', $name); $name = preg_replace('/\\s+/', '-', $name); $name = preg_replace('|-+|', '-', $name); $name = trim($name, '-'); return $name; }
/** * Sanitizes a string for use as a slug, replacing whitespace and a few other characters with dashes. * * Limits the output to alphanumeric characters, underscore (_), periods (.) and dash (-). * Whitespace becomes a dash. * * @since 2.1.0 * * @param string $slug The string to be sanitized for use as a slug. * * @return string The sanitized title. */ function gp_sanitize_slug($slug) { $slug = remove_accents($slug); $slug = strip_tags($slug); // Preserve escaped octets. $slug = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $slug); // Remove percent signs that are not part of an octet. $slug = str_replace('%', '', $slug); // Restore octets. $slug = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $slug); $slug = gp_strtolower($slug, 'UTF-8'); if (seems_utf8($slug)) { $slug = utf8_uri_encode($slug, 200); } // Convert nbsp, ndash and mdash to hyphens. $slug = str_replace(array('%c2%a0', '%e2%80%93', '%e2%80%94'), '-', $slug); // Convert nbsp, ndash and mdash HTML entities to hyphens. $slug = str_replace(array(' ', ' ', '–', '–', '—', '—'), '-', $slug); // Strip these characters entirely. $slug = str_replace(array('%c2%a1', '%c2%bf', '%c2%ab', '%c2%bb', '%e2%80%b9', '%e2%80%ba', '%e2%80%98', '%e2%80%99', '%e2%80%9c', '%e2%80%9d', '%e2%80%9a', '%e2%80%9b', '%e2%80%9e', '%e2%80%9f', '%c2%a9', '%c2%ae', '%c2%b0', '%e2%80%a6', '%e2%84%a2', '%c2%b4', '%cb%8a', '%cc%81', '%cd%81', '%cc%80', '%cc%84', '%cc%8c'), '', $slug); // Convert times to x. $slug = str_replace('%c3%97', 'x', $slug); // Kill entities. $slug = preg_replace('/&.+?;/', '', $slug); $slug = preg_replace('/[^%a-z\\.0-9 _-]/', '', $slug); $slug = preg_replace('/\\s+/', '-', $slug); $slug = preg_replace('|-+|', '-', $slug); $slug = trim($slug, '-'); return $slug; }