2011-01-21 8 views
15

Ho qualche problema a sostituire il segno "+" con la sua stringa urlencoded di "% 2B". Come posso fare questo?Come posso sostituire il segno più "+" con la relativa codifica url di "% 2B"?

Questo è quello che ho provato:

testo immesso nella casella di testo:

plus(+) 

Ho poi urlencode la stringa:

$string = urlencode($string); 

String ora assomiglia:

plus%28+%29 

Voglio avere il "+" urlencoded, oppure quando urldecode() i dati da visualizzare nel browser che finire con:

plus() 

perché urldecode() interpreta il "+" per essere uno spazio.

Ho provato ad utilizzare str_replace PHP(), ma continuo a ricevere un "NULL" ha prodotto come valore per "$ nuova_stringa":

$new_string = str_replace('+', '%2B', $string); 

Tutte le idee?

Grazie in anticipo!

+1

Uso 'urlencode ($ string)' echos 'più% 28% 2B% 29' per me. –

risposta

33

Questo è strano. Quando uso urlencode su plus(+) ottengo plus%28%2B%29. Assicurati di utilizzarlo correttamente.

Si potrebbe anche provare rawurlencode. Codificherà gli spazi come %20 anziché +.

+10

++ Dai commenti nella pagina del manuale PHP (http://php.net/manual/en/function.urlencode.php): "Non utilizzare urlencode() o urldecode() se il testo include un indirizzo email , poiché distrugge il carattere "+", un carattere di indirizzo email perfettamente valido. A meno che tu non sia certo che non codifichi gli indirizzi email E hai bisogno della leggibilità fornita dall'uso "+" non standard, usa invece sempre usa rawurlencode() o rawurldecode(). " – John

Problemi correlati