aiuto regex preg_match
-
19-09-2019 - |
Domanda
Ciao Ho bisogno di un po 'di aiuto.
Ecco il codice preg_match esistente:
preg_match("/(\/)([0-9]+)(\/?)$/", $_SERVER["REQUEST_URI"], $m);
che fa un buon lavoro di rilevare la post_id
nella seguente stringa URI:
http://www.example.com/health-and-fitness-tips/999/
Credo che dovrebbe essere abbastanza sfondo.
Sto cambiando il 999
, il post_id
, a how-do-I-lose-10kg-in-12-weeks', the
post_title`, e la necessità di modificare l'espressione regolare pre_match per rilevare la nuova stringa.
Il mio primo pensiero è stato quello di aggiungere solo [a-z] - alla fine della regex fare la seguente espressione regolare:
"/(\/)([0-9][a-z]/-+)(\/?)$/"
E 'forse questa semplice? In caso contrario, ciò che è sbagliato con quanto sopra?
Soluzione
Non del tutto: ([0-9][a-z]/-+)
è "un numero, seguito da una lettera, seguita da almeno un trattino"
Si vuole ([-0-9a-z]+)
.
Altri suggerimenti
Vorrei solo usare \w
:
preg_match('!/([-\w]+)/?$!', $_SERVER['REQUEST_URI'], $m);
Classi di caratteri o set di caratteri :
\w
sta per "carattere di parola", di solito[A-Za-z0-9_]
. Si noti la inclusione della sottolineatura e cifre.
\w
significa parola, può essere lettera maiuscole e minuscole da A a Z e di z, numeri da 0 a 9 o _. E 'equivalente a [A-Za-z0-9_]
. È possibile verificare nel tester on-line qui.