2012-03-02 51 views
0

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

今すぐ変数$パーマリンクがあること5つの空き領域を言うだろうと想像(意味がありませんが、ユーザーは、おそらくそれを入力することができます): これは私が今まで持っているものです。さて、$ new_permaは ----- となるでしょう。問題があるので、URLには -が1つしかありません。明らかに、私は最後にstr_replaceを使って、2、3、4、5 ...の後ろをダッシュ​​で置き換えることができました。しかし、可能な限りの量のダッシュに対して検索パターンを指定する必要があります。ですから、変数$ new_parma内のダッシュをすべて削除する方法が必要です。

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

+手段「一つ以上の」:

答えて

3

はちょうどあなたの関数の戻り値の前にこれを追加します。このパターンは、1つ以上のダッシュを1つのダッシュに置き換えます。

1

私のurlify()の機能を見てください。あなたの関数とは対照的に、それはより多くの非ASCII文字を扱います(そして "ä"を "ae"などに置き換えます)。

+0

文字をアクセント記号に置き換えますか?たとえば、ñから – phpheini

+0

まであります。いくつかの使用例を見るために、要点の2番目のファイルを見てください。 – rodneyrehm

+0

あなたの機能を使って、とても素敵です!どうもありがとう! – phpheini