我正在尝试创建一个创建永久链接的函数。 这就是我现在所拥有的:
public function createPermalink($permalink)
{
$new_perma = strtolower($permalink);
$searchsigns = array('Ö', 'Ä', 'Ü', 'ß', '-', '_', ' ', 'ö', 'ä', 'ü');
$replaces = array('oe', 'ae', 'ue', 'ss', '', '-', '-', 'oe', 'ae', 'ue');
$new_perma = str_replace($searchsigns, $replaces, $new_perma);
$new_perma = preg_replace('/[^a-z0-9_-]/isU', '', $new_perma);
return $new_perma;
}
现在假设变量$ permalink会说5个空闲空间(没有意义,但用户可能会输入它)。现在会发生的是$ new_perma将是-----
所以有问题,在URL中只允许一个-
。显然我最终可以使用str_replace来替换彼此后面的2,3,4,5 ......破折号。但我需要为任何可能的破折号指定搜索模式。所以我需要的是一种方法来删除变量$ new_parma中的所有破折号,这些破折号连续多个。
答案 0 :(得分:3)
在函数返回之前添加它:
$new_perma = preg_replace('/-+/', '-', $new_perma);
+
表示“一个或多个”。所以这个模式用一个短划线代替一个或多个破折号。
答案 1 :(得分:1)
查看我的urlify()功能。与您的功能相比,它处理更多的非ASCII字符(并用“ae”替换“ä”等)。