Come leggere stringhe di query in PHP

November 28

Quando si entra "http://example.com/program.php?first=1&second=2&third=3" in un browser, si esegue lo script PHP" program.php "sul sito" example.com " e fornire tre valori dei parametri: "prima" uguale a uno, "secondo" uguale a due e "terzo" pari a tre la stringa di query è l'ultima parte del URL che inizia con "prima", e viene memorizzato automaticamente in una globale. serie dal server Web. Quando si esegue uno script PHP da linea di comando, i valori si passa vengono memorizzati in un array globale diverso.

istruzione

1 Leggi la stringa di query accedendo l'elemento QUERY_STRING della matrice globale $ _SERVERS. Si consideri, ad esempio, l'URL:

http://example.com/program.php?first=1&second=2&third=3

Il seguente codice:

<? Php
//program.php
$ Qs = $ _SERVER [ 'QUERY_STRING'];
echo "Query String:". $ Qs;
?>

produce il seguente output:

Query String: primo = 1 & secondo = 2 & 3 = terzo

2 Analizzare la stringa di query nei suoi argomenti distinti utilizzando la funzione di "esplodere" a rompere la stringa di query oltre ad ogni e commerciale. Ad esempio, il codice seguente:

<? Php
// program.php
$ Risultato = esplodere ( "&", $ _SERVER [ 'QUERY_STRING']);
print_r ($ risultato);
?>

produce il seguente output:

Array {
[0] => "first = 1"
[1] => "second = 2"
[2] => "terzo = 3"
}

3 Accedere all'elemento "argv" della matrice $ _SERVERS di leggere le componenti della stringa di query quando si esegue uno script PHP da linea di comando. Si consideri, ad esempio, il comando seguente:

php program.php primo = 1 secondo = 2, terzo = 3

Il seguente codice:

<? Php
// program.php
$ Qs = $ _SERVER [ 'argv'];
print_r ($ QS);
?>

produce il seguente output:

Array {
[0] => "program.php"
[1] => "first = 1"
[2] => "secondo = 2"
[3] => "terzo = 3"
}

4 Utilizzare la funzione "implodere" per creare la stringa di query dall'ingresso linea di comando. Ad esempio, la linea di comando:

php program.php primo = 1 secondo = 2, terzo = 3

quando eseguito con il seguente codice:

<? Php
// program.php
$ Qsparts = $ _SERVER [ 'argv'];
unset ($ [0] QS); // Rimuovere il nome del programma
$ qs = implode ( "&", $ qsparts);
echo "query string: $ qs";
?>

produce il seguente output:

query string: primo = 1 & secondo = 2 & 3 = terzo

Consigli e avvertenze

  • Dal momento che un utente tipico non può eseguire uno script PHP da linea di comando, la maggior parte degli script PHP sono scritti assumendo che lo script è sia sempre eseguito da un browser o sempre eseguito dalla riga di comando. Tuttavia, il PHP_SAPI costante predefinita è impostato su "CLI" quando uno script viene eseguito dalla riga di comando. Per esempio:
  • <? Php
  • define ( "RIGA_COMANDO", PHP_SAPI == "CLI");
  • if (RIGA_COMANDO)
  • $ QUERY_STRING = read_commandLline_qs ();
  • altro
  • $ QUERY_STRING = read_url_qs ();
  • read_command_line_qs function () {
  • $ Qs = $ _SERVER [ 'argv'];
  • unset ($ qs [] 0]);
  • implode tornare ( '&', $ qs);
  • }
  • read_url_qs function () {
  • return $ _SERVER [ '' QUERY_STRING '];
  • ?>
  • Poiché i valori dell'array $ _SERVER è fissato dal server Web in base alla sua configurazione, non vi è alcuna garanzia che un server Web fornirà uno dei valori nella matrice. Tuttavia, come minimo, la maggior parte dei server Web forniscono i valori inclusi nella specifica Common Gateway Interface.