2012-07-30 28 views
9

मैं निम्न URL है: $url = 'http://mysite.com/?p=welcome&x=1&y=2';किसी URL से & डिकोड करने के लिए कैसे इतना है कि शीर्ष लेख() काम करता है (urldecode काम नहीं कर रहा)

मैं इसे डिकोड करने के लिए इतना है कि header("Location: $url"); वास्तव में काम करता है की जरूरत है।

हालांकि, urldecode($url) का उपयोग कर काम नहीं कर रहा है क्योंकि यह नहीं& डिकोडिंग है ->& और इतने ब्राउज़र http://mysite.com/?p=welcome&x=1&y=2 जो विफल रहता है पर पुनः निर्देशित हो रही है। http://mysite.com/?p=welcome&x=1&y=2

मैं ऐसा कैसे करते हैं:

मैं यह इतना डिकोड करने के लिए है कि यह की तरह लग रहा है?

+1

यदि उपर्युक्त टाइपो नहीं है: यह 'हेडर ("स्थान: $ url") होना चाहिए' - '' ''। –

+0

@Marc B: धन्यवाद, मेरी स्क्रिप्ट में नहीं, यहां सिर्फ एक टाइपो था। बस इसे ऊपर तय किया। – ProgrammerGirl

उत्तर

19

htmlspecialchars_decode

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

'htmlspecialchars_decode' के बीच क्या अंतर है आप सिफारिश कर रहे हैं और 'html_entity_decode' हर कोई सिफारिश कर रहा है? मुझे किसका उपयोग करना चाहिए? – ProgrammerGirl

+1

@ प्रोग्रामर 'html_entity_decode' भारी वजन इकाई डिकोडिंग के लिए है, जैसे '←' '' 'में बदलना। 'htmlspecialchars_decode' केवल बच निकलने वाले एचटीएमएल के लिए है, यह केवल HTML से बचने के लिए आवश्यक वर्णों को डीकोड करता है। 'htmlspecialchars_decode' यहां आईएमओ का उपयोग करने के लिए अर्थात् अधिक सही है। – Esailija

+1

आप यहां उदाहरण देख सकते हैं: http://codepad.org/Mv3vtrYZ – Esailija

5

& साथ प्रयास करें (उर्फ percent-encoding) इनकोडिंग नहीं यूआरएल, लेकिन एक HTML इकाई है। यूआरएल-एन्कोडेड यह %26 जैसा दिखेगा।

html_entity_decode() का उपयोग करें।

4

मैं यह कोशिश करेंगे:

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

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

लिया मैं इतना क्योंकि है कि आपके द्वारा $url URL- एनकोडेड नहीं है, लेकिन, एचटीएमएल एन्कोड एचटीएमएल के साथ विशेष वर्ण संबंधित एचटीएमएल इकाई के साथ बदल दिया।