0

こんにちは、少し助けが必要です。

既存の preg_match コードは次のとおりです。

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

post_idこれは、次の URI 文字列でを適切に検出します。

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

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

999post_id、をhow-do-I-lose-10kg-in-12-weeks', thepost_title` に変更しており、新しい文字列を検出するために pre_match 正規表現を変更する必要があります。

私の最初の考えは、次の正規表現を作成する正規表現の最後に [az]- を追加することでした:

"/(\/)([0-9][a-z]/-+)(\/?)$/"

ひょっとして、こんなに単純なの?そうでない場合、上記の何が問題になっていますか?

4

3 に答える 3

2

そうではありません: ([0-9][a-z]/-+)「数字の後に文字が続き、その後に少なくとも 1 つのダッシュが続く」です。

あなたがしたい([-0-9a-z]+)

于 2009-10-05T03:07:51.980 に答える
0

\w単語を表し、大文字と小文字の両方のAからZおよびaからzの文字、0から9または_の数字にすることができます。と同等[A-Za-z0-9_]です。こちらのオンラインテスターでテストできます。

于 2009-10-05T05:35:17.060 に答える
0

私はちょうど使用します\w

preg_match('!/([-\w]+)/?$!', $_SERVER['REQUEST_URI'], $m);

文字クラスまたは文字セットから:

\wは「単語文字」を表し、通常は[A-Za-z0-9_]. アンダースコアと数字が含まれていることに注意してください。

于 2009-10-05T03:07:37.847 に答える