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', thepost_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?

¿Fue útil?

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.

\w significa palabra, puede ser carta mayúsculas y minúsculas de A a Z y A a la Z, número de 0 a 9 o _. Es equivalente a [A-Za-z0-9_]. Se puede probar en el probador en línea aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top