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

4

我已经阅读了所有与此相关的问题,并想知道$str = preg_replace('/[^\00-\255]+/u', '', $str);是否足够适用于我的情况。

我的情况

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

例如,您为“Peter's Pet Shop& Washing”创建一个帐户 - 我需要删除所有不允许用作URL地址的空格和字符。因此,最终我需要得到“peterspetshopwashing”

这样您就可以在“www.mydomain.com/peterspetshopwashing”中访问您的帐户。


1
要小心,因为“Peter's Pets Hop @ Washing”也会被翻译成相同的字符串。 - kapa
是的,注意到了。将会检查输入必须是唯一的。 - Pangolin
1个回答

12

我目前使用这个函数,我很满意。

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


太好了,我稍微调整了一下,现在用 ' 代替了 -。谢谢。 - Pangolin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接