separare i valori in un URL, non con un &

Ogni parametro in un URL può avere più valori. Come posso separare? Ecco un esempio:

http://www.example.com/search?queries=cars,phones

Quindi voglio cercare 2 cose diverse: auto e telefono (questo è solo un esempio artificioso). Il problema è il separatore, una virgola. Un utente può immettere una virgola nel modulo di ricerca come parte del loro query e quindi questo potrebbe ottenere avvitato. Potrei avere 2 diversi parametri URL:

http://www.example.com/login?name1=harry&name2=bob

Non c’è nessun problema, in realtà, credo che questo è come gli Url sono stati progettati per gestire questa situazione. Ma non posso usare nella mia particolare situazione. Richiede una lunga post per dire perché… ho bisogno semplicemente di separare i valori.

La mia domanda è, fondamentalmente, c’è un URL encodable carattere o un valore che non può essere inserito in un modulo (textarea o input) che posso usare come separatore? Come un carattere null? O non è visibile personaggio?

AGGIORNAMENTO: grazie a tutti voi per la vostra rapida risposta. Io dovrei aver elencato lo stesso parametro esempio di nome di troppo, ma l’ordine è importante nel mio caso non era un’opzione. Abbiamo risolto questo problema utilizzando un %00 URL codificato di caratteri (UTF-8 \u0000) come separatore di campo.

Come sono i valori in input dall’utente, in primo luogo? Un certo numero di campi di testo?
Perché non ti url codificare il valore dei vostri parametri? Se entrano %20% sarà ottenere codificato in modo da non effettivamente causare un problema, o mi manca qualcosa?
i valori di input standard html gli elementi del modulo. Il problema con %20 non è che entravano %20, che entreranno a che %20 rappresenta uno spazio credo).
È citato in un commento qui sotto, che “questo è un widget standard meccanismo che viene utilizzato in un mille situazioni diverse.” – va notato che %00 (NULL codificato) nella stringa di query sarà attivamente bloccato su alcuni server come una cassetta di sicurezza di guardia.

InformationsquelleAutor at. | 2010-09-17

6 Replies
  1. 13

    L’approccio standard per questo è di utilizzare la stessa chiave.

    http://www.example.com/search?queries=cars&queries=phones

    Forma più librerie vi permetterà di accesso automaticamente in un array. (Se si utilizza PHP (e facendo uso di $_POST/GET e non reinventare la ruota) è necessario modificare il nome di queries[].)

    Ho detto nel mio aggiornamento che sei corretto questa era un’opzione, ma nel mio caso ho davvero bisogno solo di separare i valori all’interno di un valore di parametro. Ordine e i parametri con lo stesso nome si hanno diversi valori separati (a volte con un ordine diverso)

    InformationsquelleAutor Quentin

  2. 2

    Si può dare loro ciascuno il stesso nome del parametro.

    http://www.example.com/search?query=cars&query=telefoni

    Medio del lato server HTTP API è in grado di ottenere loro un array. Secondo la vostra domanda di storia, si sta usando JSP/Servlet, in modo che è possibile utilizzare HttpServletRequest#getParameterValues() per questo.

    String[] queries = request.getParameterValues("query");
    Sì, questo non funziona per me, perché l’ordine è importante, ho spiegato in un altro messaggio di risposta leggermente più in dettaglio. Sono felice di vedere che vi ricordate le mie altre domande però! Grazie per il vostro aiuto! Ho trovato una buona soluzione, credo, che per questo problema (domanda di aggiornamento).

    InformationsquelleAutor BalusC

  3. 1

    Venire con la propria separatore che è improbabile per ottenere entrato in una query. Due caratteri di sottolineatura '__' per esempio.

    Questo è essenzialmente quello che mi è stato chiesto, ma volevo qualcosa che sarebbe impossibile ottenere immessi in un form html elemento.

    InformationsquelleAutor Rohrbs

  4. 1

    Perché non basta fare qualcosa di simile a “||”? Chiunque tipi che in un area di ricerca probabilmente addormentato sulla tastiera :} Poi esplodono sul backend.

    forse hai ragione :). Ma questo è un widget standard meccanismo in grado di essere utilizzato in mille situazioni diverse.
    Ahhh, ok che cambia le cose. Mi dispiace.

    InformationsquelleAutor malonso

  5. 0

    cosa più semplice da fare sarebbe quella di utilizzare un separatore personalizzato come [!!ValSep!!].

    InformationsquelleAutor Vinay B R

Lascia un commento