2011-01-21 20 views
15

"+" işaretinin "% 2B" şeklinde kodlanmış dizesiyle değiştirilmesiyle ilgili bir sorun yaşıyorum. Bunu nasıl yapabilirim?"+" artı işaretini "% 2B" nin ilgili URL kodlamasıyla nasıl değiştirebilirim?

Metin metin kutusuna girmiştir:

Bu

denedim budur

plus(+) 

Sonra dize urlencode:

:

$string = urlencode($string); 

Dize şimdi benziyor

plus%28+%29 

Ben "+" urlencoded olmasını istiyorum, yoksa tarayıcıda görüntülemek için) (veri urldecode zaman ile sonuna kadar: urldecode() "+" bir uzay olarak yorumladığı çünkü

plus() 

.

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

Herhangi fikirler:

Ben php'nin str_replace() kullanarak çalıştı ama "NULL" almaya devam "$ new_string" değeri olarak geri döndü?

Şimdiden teşekkürler!

+1

'urlencode ($ string)' echos 'artı% 28% 2B% 29' kullanmak benim için. –

cevap

33

Bu garip. plus(+) üzerinde urlencode kullandığımda plus%28%2B%29 olsun. Doğru şekilde kullandığınızdan emin olun.

Ayrıca, rawurlencode'u da deneyebilirsiniz. Bu alanları + yerine %20 olarak kodlar.

+10

++ PHP el kitabındaki yorumlardan (http://php.net/manual/en/function.urlencode.php): "Metin bir e-posta adresi içeriyorsa urlencode() veya urldecode() kullanmayın "+" karakterini, mükemmel bir e-posta adresi karakterini yok ettiğinden, e-posta adreslerini kodlayamayacağınızdan emin değilseniz VE standart olmayan "+" kullanım tarafından sağlanan okunabilirliğe ihtiyacınız varsa, her zaman kullanın rawurlencode() veya rawurldecode() kullanın. " – John

İlgili konular