2011-08-15 12 views
0

私は新しいCMSのためのURLルーティングスクリプトを作成しようとしていますが、私の強い側ではない正規表現を告白する必要があります。これまでのところ、私はエラーに陥ったり、結果が出なかったりします。 :id:year:slugなどのような特定のタグを使用している何を私が達成しようとしているURLルーティングの正規表現ヘルプ

...

誰も私を助けるか、これで正しい方向に私を導くことができる、それがするpreg_matchまたは類似を使用する方法です正しい "URLパターン"を見つけるための関数? Googleはかつてのためにそれを仕事をしていません:S

ADDED

例のURL http://www.mysite.com/post/2011/08/15/title-of-a-blogg-post/

私はルートのデータベースを持っており、一つのパターンは、たとえばpost/:year/:month/:day/:slugのためであれば、私はそれがこのパターンに一致するようにしたいと特定のコントローラ、アクションを呼び出し、この例では特定の記事を呼び出します。

私は

$patterns = array(
    ":id"    => "/^[0-9]*$/", 
    ":year"    => "/^([0-9]{4})*$/", 
    ":year_short"  => "/^([0-9]{2})*$/", 
    ":month"   => "/^([0-9]{2})*$/", 
    ":day"    => "/^([0-9]{2})*$/", 
    ":slug"    => "/^[a-zA-Z0-9 -]*$" 
); 

のようなルックスを作成した正規表現の配列私は私が​​に:idを交換し、その後、URLパターンは私のルートテーブルに存在するかどうかを見つけるためにするpreg_matchを実行する必要があり数えます。しかし、私は正しい正規表現のパターンを使用しているのか、まったく失われたのか分かりません。 (私も$ _GETを使用する必要があるため)

.htaccessファイルは、私はURLを取得し、$ _GET変数を除外するために、基本的にこれを使用

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

です。

+0

このマニュアルでは、正規表現パターンhttp://www.php.net/manual/en/reference.pcre.pattern.syntax.phpについて説明しています。また、http://regular-expressions.info/も参考にしてください。また、http://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-worldのようなツールは、それらを作成するのに役立ちます。 – mario

+0

あなたはあなたの質問にもっと詳しい情報を入力してください。入力内容、あなたのコードと説明とは何が働いていないのか、結果として正確に何が期待されますか? – stema

+0

私が追加したコードがほんとうに私が達成しようとしていることを少し説明してくれることを願っています – dansige

答えて

1

あなたが達成しようとしていることはわかりません。

しかし、あなたは、すべてのタグがハイフンで区切られwww.mysite.com/tags/id-year-slug

のようなURLをしたい場合、あなたはこのように行うことができます:

まず、かなりのURLを作成するには、ルートに.htaccessファイルが必要です。

$tags = explode('-',$_GET['tags']); 

今、あなたがあなたのSQLに使用できるタグの配列を、持っているし、URLがかなりある - 高:区切り文字を -

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/tags/([A-Za-z-]+)$ index.php?tags=$1 [L,QSA] 

は、その後、あなたのインデックスに、次の方法でタグを爆発します五!

+0

+1の「ハイ5」! – daGrevis

+0

あなたの答えはthxですが、私が正確に探していたものではありません。私は私の質問を更新しましたので、私はそれが私が探しているものにいくつかの光を当てることができることを願っています。 – dansige

+0

この質問に対する解決策を見つけました:) – dansige