ayuda de expresiones regulares preg_match
-
19-09-2019 - |
Pregunta
Hola necesito un poco de ayuda.
Aquí está el código preg_match existente:
preg_match("/(\/)([0-9]+)(\/?)$/", $_SERVER["REQUEST_URI"], $m);
, que hace un buen trabajo de detección de la post_id
en la siguiente cadena URI:
http://www.example.com/health-and-fitness-tips/999/
Creo que debería ser suficiente fondo.
Estoy cambiando la 999
, la post_id
, a how-do-I-lose-10kg-in-12-weeks', the
post_title`, y la necesidad de cambiar la expresión regular pre_match para detectar la nueva cadena.
Lo primero que pensé fue que sólo tiene que añadir [a-z] - hasta el final de la expresión regular haciendo la siguiente expresión regular:
"/(\/)([0-9][a-z]/-+)(\/?)$/"
Es, posiblemente, es así de simple? Si no, lo que está mal con lo anterior?
Solución
No del todo: es ([0-9][a-z]/-+)
"un número, seguido de una letra, seguido de al menos un guión"
¿Quieres ([-0-9a-z]+)
.
Otros consejos
Me acaba de utilizar \w
:
preg_match('!/([-\w]+)/?$!', $_SERVER['REQUEST_URI'], $m);
Clases de caracteres o juegos de caracteres :
\w
significa "carácter de palabra", por lo general[A-Za-z0-9_]
. Observe la inclusión del subrayado y dígitos.