2012-07-30 14 views
9

Aşağıdaki URL: $url = 'http://mysite.com/?p=welcome&x=1&y=2';o başlık() (urldecode çalışmıyor) çalışır böylece bir URL'den & Decode Nasıl

Ben header("Location: $url"); gerçekten çalışıyor bu yüzden bu kadar deşifre gerekir. böylece tarayıcı başarısız http://mysite.com/?p=welcome&x=1&y=2 yönlendirilir oluyor>& ve - bu & çözme değil çünkü

Ancak urldecode($url) kullanarak çalışmıyor. Bunu nasıl http://mysite.com/?p=welcome&x=1&y=2

:

Ben göründüğü gibi o kadar çözmesi gerekiyor? htmlspecialchars_decode

echo htmlspecialchars_decode('http://mysite.com/?p=welcome&x=1&y=2'); 
//"http://mysite.com/?p=welcome&x=1&y=2" 
+1

Yukarıdaki durum bir yazım hatası DEĞİLDİR: başlık olmalıdır ("Konum: $ url") '- not::'. –

+0

@Marc B: Teşekkürler, benim yazımda değil, sadece yazım hatası vardı. Sadece yukarıda tamir ettim. – ProgrammerGirl

cevap

19

deneyin (aka percent-encoding) kodlanmış, ancak bir HTML varlıktır URL değil. URL kodlu olarak %26 gibi görünecekti.

html_entity_decode()'u kullanın.

+2

Tavsiye ettiğiniz htmlspecialchars_decode' ile html_entity_decode' arasındaki herkesin önerdiği öneri nedir? Hangisini kullanmalıyım? – ProgrammerGirl

+1

@Programmer 'html_entity_decode',' 0 'içine' ← 'türünü çevirmek gibi, ağırlığa sahip bir varlık kodu çözme işlemidir. 'htmlspecialchars_decode' sadece kaçan html kaçmak için, sadece html kaçmak için gerekli karakterleri çözer. 'htmlspecialchars_decode', burada imo kullanmak için semantik olarak daha doğrudur. – Esailija

+1

Burada örneği görebilirsiniz: http://codepad.org/Mv3vtrYZ – Esailija

4

Bunu denemek istiyorum kullanmak gerekir: Öyle '

$url = html_entity_decode($url); 
header("Location: $url"); 

http://php.net/manual/en/function.html-entity-decode.php

alınan neden yok diye senin $url url kodlanmış ancak html ile, html kodlu değildir özel karakterler karşılık gelen html öğesiyle değiştirilir.

İlgili konular