PHP从字符串中删除url-"not allowed"字符

Lou*_*ley 2 php preg-replace

我已经阅读了有关这方面的所有问题,并想知道$str = preg_replace('/[^\00-\255]+/u', '', $str);我的方案是否足够.

我的情景

当用户在我的网站上创建帐户时,他输入了公司的名称.这可以是任何东西,包括文本'或者"甚至是其他一些奇怪的字符.当他创建一个帐户时,我需要在我的服务器上创建一个文件夹,以便他更轻松地访问他的帐户而无需使用uniqids等.

例如,您为"Peter's Pet Shop&Washing"创建了一个帐户 - 我需要删除所有不允许作为url-address的空格和字符.所以最后我需要"peterspetshopwashing"

这样您就可以通过"www.mydomain.com/peterspetshopwashing"访问您的帐户

gen*_*sis 7

我目前使用这个功能,我很满意

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;
}
Run Code Online (Sandbox Code Playgroud)

它会替换空格和其他奇数字符,-因此结果将是peter-s-pet-shop-washing