Preg_match regex yardım

3 Cevap php

Merhaba ben biraz yardım gerekiyor.

Burada mevcut preg_match kodu:

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

hangi aşağıdaki URI dizesi post_id tespit iyi bir iş yapar:

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

Ben yeterince plan olması gerektiğine inanıyoruz.

Ben 999, post_id, how-do-I-lose-10kg-in-12-weeks', the POST_TITLE `ye değişen ve yeni dize algılamak için pre_match regex değiştirmek gerekir ediyorum.

Benim ilk düşünce sadece [az] eklemek oldu - aşağıdaki regex yapma regex sonuna:

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

Muhtemelen bu basit? Eğer değilse, ne yukarıda yanlış?

3 Cevap

Pek değil: ([0-9][a-z]/-+) "en azından bir çizgi izlediği bir mektupla ardından bir sayı," dir.

İstediğiniz ([-0-9a-z]+).

Ben sadece kullanmak \w olacaktır:

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

Dan Character Classes or Character Sets:

\w stands for "word character", usually [A-Za-z0-9_]. Notice the inclusion of the underscore and digits.

\w kelime açılımı, büyük harf ve Z küçük harf A ve z, sayı 0 ila 9 ya _ hem harf olabilir. Bu [A-Za-z0-9_] eşdeğerdir. Sen online tester burada test edebilirsiniz.