2011-12-28 7 views
5

ho il seguente script php per leggere la richiesta di URL:php REQUEST_URI

$id = '/' != ($_SERVER['REQUEST_URI']) ? 
    str_replace('/?id=' ,"", $_SERVER['REQUEST_URI']) : 0; 

E 'stato utilizzato quando l'URL è http://www.testing.com/?id=123

Ma ora io voglio passare più 1 variabile nella stringa URL http://www.testing.com/?id=123&othervar=123

come devo cambiare il codice sopra per recuperare entrambe le variabili?

risposta

11

È possibile utilizzare regex o continuare a utilizzare str_replace.

Es.

$url = parse_url($_SERVER['REQUEST_URI']); 

if ($url != '/') { 
    parse_str($url['query']); 
    echo $id; 
    echo $othervar; 
} 

uscita sarà: http://www.testing.com/123/123

+0

Mi picchia! Inoltre, considera la possibilità di utilizzare $ _SERVER ['QUERY_STRING'] per semplificare. –

+0

quindi sarebbe qualcosa come $ url = $ _SERVER ['REQUEST_URI']; if ($ url! = '/') { $ id = str_replace ('/? Id =', null, $ _SERVER ['REQUEST_URI']); $ othervar = str_replace ('& othervar =', '/', $ _SERVER ['REQUEST_URI']); } echo $ id // 123 echo $ othervar // 123 – user1118904

+0

Considererei anche l'utilizzo della corrispondenza del modello. – nand

1

forse

$id = isset($_GET['id'])?$_GET['id']:null; 

e

$other_var = isset($_GET['othervar'])?$_GET['othervar']:null; 
5

Penso che parse_str è quello che stai cercando, qualcosa di simile dovrebbe fare il trucco per te:

parse_str($_SERVER['QUERY_STRING'], $vars); 

Quindi la matrice $vars conserverà tutti gli argomenti passati.

+0

wow è fantastico: D grazie! – user1118904

0

Dal Vars passati attraverso url sono $ _GET Vars, è possibile utilizzare la funzione filter_input():

$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT); 
$othervar = filter_input(INPUT_GET, 'othervar', FILTER_SANITIZE_FULL_SPECIAL_CHARS); 

Si sarebbe memorizzare i valori di ogni var e disinfettare/convalidarli troppo.

Problemi correlati