【发布时间】:2012-06-15 08:55:31
【问题描述】:
以下函数重写包含各种字符的新闻和产品标题的 url。我希望创建的字符串仅包含字母数字值和“-”,但没有结尾“-”或空格,也没有重复的“-”。下面的函数运行良好,但我想知道是否有任何方法可以更简单或更高效地编写它?
function urlName($string) {
$string = trim($string); // no open ends
$string = strtolower($string); // all lowercase
$string = strtr($string, 'äöåÄÖÅ', 'aoaaoa'); // substitute umlauts
$string = preg_replace('/[\W]+/', '-', $string); // substitute non-word characters with -
$string = preg_replace('/^-*|-*$/', '', $string); // no beinging or ending -
return $string;
}
【问题讨论】:
-
这里之前已经问过这个问题,其中包含代码。现在正在寻找它。
-
为什么只有变音符号?
áéüíú等其他特殊字符呢? -
-bažmegakapa 域没有,因此大多数用户希望路径表现相似。 -约翰康德感谢链接 - 我认为问题有点相似,但不完全相同。他不关心包含非单词字符的名称(例如 % - & 等等)-Mike B ty,将尝试添加标签
-
-bažmegakapa 我实际上误读了您的评论。你对其他角色也很正确。我应该提到服务器正在运行 php 4.3,因此可能需要类似 yent 的转换表之类的东西:(
标签: php regex url url-rewriting slug