2012-03-02 66 views
0

我想創建一個函數來創建永久鏈接。 這是我到現在爲止:如何創建沒有多個破折號的永久鏈接?

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;  
} 

現在想象變量$永久會說5個自由空間(沒有意義,但是用戶可能會輸入)。現在會發生什麼是$ new_perma將是----- 所以有這個問題,在URL中只有一個-允許。很顯然,我可以在最後使用str_replace來替換後面的2,3,4,5 ...破折號。但我需要指定任何可能數量的破折號的搜索模式。所以我需要的是一種方法來刪除變量$ new_parma中的所有破折號,這些破折號在一行中不止一個。

回答

3

只是你的函數返回前補充一點:

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

+的意思是「一個或多個」。所以這個模式用一個破折號代替一個或多個破折號。

1

看看我的urlify()功能。與你的函數相反,它處理更多的非ASCII字符(並用「ae」替代「ä」等)。

+0

它是否用一個口音代替字母?例如á到 – phpheini 2012-03-02 13:32:10

+0

是的。看看第二個要點的文件,看看一些例子的用法。 – rodneyrehm 2012-03-02 13:36:26

+0

非常好,現在使用你的功能!非常感謝! – phpheini 2012-03-02 14:09:56