質問
こんにちは、私は助けのビットを必要とします。
ここでは、既存するpreg_matchコードがあります:
preg_match("/(\/)([0-9]+)(\/?)$/", $_SERVER["REQUEST_URI"], $m);
これは、次のURI文字列でpost_id
を検出する良い仕事をします:
http://www.example.com/health-and-fitness-tips/999/
私はそれが十分な背景であるべきと考えています。
私は999
post_title`、および新しい文字列を検出するために、pre_matchの正規表現を変更する必要があるために、post_id
をhow-do-I-lose-10kg-in-12-weeks', the
を変更しています。
私が最初に考えたのは、単に[-Z]を追加することでした - 次の正規表現を作成する正規表現の最後に:
"/(\/)([0-9][a-z]/-+)(\/?)$/"
これはおそらく、この単純なのですか?そうでない場合は、上記と間違っているでしょうか?
解決
未かなり:([0-9][a-z]/-+)
がある「少なくとも一つのダッシュに続く文字が続く番号、」
あなたは([-0-9a-z]+)
を望んます。
他のヒント
私はちょうど\w
を使用することになります:
preg_match('!/([-\w]+)/?$!', $_SERVER['REQUEST_URI'], $m);
文字クラスや文字からはに設定します:
\w
は "単語文字" の略で、 通常[A-Za-z0-9_]
。注意してください アンダースコアを含めると、 桁ます。
\w
はワードを表し、9または_にZおよびZに、番号0に文字大文字と小文字のAの両方とすることができます。それは[A-Za-z0-9_]
に相当します。あなたはここにオンラインテスターの中でテストすることができます。
所属していません StackOverflow