質問

こんにちは、私は助けのビットを必要とします。

ここでは、既存するpreg_matchコードがあります:

preg_match("/(\/)([0-9]+)(\/?)$/", $_SERVER["REQUEST_URI"], $m);

これは、次のURI文字列でpost_idを検出する良い仕事をします:

http://www.example.com/health-and-fitness-tips/999/

私はそれが十分な背景であるべきと考えています。

私は999post_title`、および新しい文字列を検出するために、pre_matchの正規表現を変更する必要があるために、post_idhow-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_]に相当します。あなたはここにオンラインテスターの中でテストすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top