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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top