Question

Salut là je besoin d'un peu d'aide.

Voici le code preg_match existant:

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

qui fait un bon travail de détection de la post_id dans la chaîne URI suivante:

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

Je crois que cela devrait être suffisant arrière-plan.

Je change la 999, le post_id, à how-do-I-lose-10kg-in-12-weeks', thepost_title`, et la nécessité de modifier l'expression régulière de pre_match pour détecter la nouvelle chaîne.

Ma première pensée était juste ajouter [a-z] - à la fin de la regex faisant l'expression rationnelle suivante:

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

Il est peut-être simple? Dans le cas contraire, ce qui ne va pas avec ce qui précède?

Était-ce utile?

La solution

Pas tout à fait: ([0-9][a-z]/-+) est «un numéro, suivi d'une lettre, suivie d'au moins un tiret »

Vous voulez ([-0-9a-z]+).

Autres conseils

Je voudrais simplement utiliser \w:

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

De Classes de caractères ou de jeux de caractères :

  

\w signifie "caractère de mot",   habituellement [A-Za-z0-9_]. Notez la   l'inclusion du trait de soulignement et   chiffres.

\w signifie mot, lettre peut être majuscules et minuscules de A à Z et a à z, nombre de 0 à 9 ou _. Il est équivalent à [A-Za-z0-9_]. Vous pouvez tester dans le testeur en ligne ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top