Я прочитал все вопросы по этому вопросу и хотел бы знать, будет ли $str = preg_replace('/[^\00-\255]+/u', '', $str);
достаточно для моего сценария.
Мой сценарий
Когда пользователь создает учетную запись на моем сайте, он вводит имя своей компании. Это может быть что угодно, включая текст с '
или "
или даже некоторыми другими странными символами. Когда он создает учетную запись, мне нужно создать папку на моем сервере, чтобы он мог легко получить доступ к своей учетной записи без использования uniqids
и т. Д.
Например, вы создаете учетную запись «Pet's Pet Shop & Washing» – мне нужно будет удалить все пробелы и символы, которые не будут разрешены в качестве URL-адреса. Поэтому в конце мне нужно иметь «peterspetshopwashing»,
Это значит, что вы можете получить доступ к своей учетной записи на странице «www.mydomain.com/peterspetshopwashing»
В настоящее время я использую эту функцию. Я доволен
function url($url) { $url = preg_replace('~[^\\pL0-9_]+~u', '-', $url); $url = trim($url, "-"); $url = iconv("utf-8", "us-ascii//TRANSLIT", $url); $url = strtolower($url); $url = preg_replace('~[^-a-z0-9_]+~', '', $url); return $url; }
он заменяет пробелы и другие нечетные символы -
так результат будет peter-s-pet-shop-washing