如何在没有多个破折号的情况下创建永久链接?

时间:2012-03-02 13:11:41

标签: php permalinks

我正在尝试创建一个创建永久链接的函数。 这就是我现在所拥有的:

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中的所有破折号,这些破折号连续多个。

2 个答案:

答案 0 :(得分:3)

在函数返回之前添加它:

$new_perma = preg_replace('/-+/', '-', $new_perma);

+表示“一个或多个”。所以这个模式用一个短划线代替一个或多个破折号。

答案 1 :(得分:1)

查看我的urlify()功能。与您的功能相比,它处理更多的非ASCII字符(并用“ae”替换“ä”等)。