2009-07-09 13 views
24

मेरे पास एक HTML टेक्स्ट है। मैंने urlencode फ़ंक्शन का उपयोग करके इसे php में एन्कोड किया था। मैं उस पाठ को जावास्क्रिप्ट में डीकोड करना चाहता हूं। जब मैं जावास्क्रिप्ट में अननस्केप फ़ंक्शन का उपयोग करता हूं तो यह सभी विशेष पात्रों को वापस ले जाता है लेकिन सैप को '+' द्वारा प्रतिस्थापित किया जाता है। मैं इसे सही तरीके से कैसे कर सकता हूं ताकि अंतरिक्ष को अंतरिक्ष के रूप में बदल दिया जा सके ???php जावास्क्रिप्ट यूआरएल एन्कोडिंग

उत्तर

16

इसके बजाय rawurlencode का उपयोग करने का प्रयास करें - urlencode कुछ चीजों को "ऐतिहासिक" कारणों से अलग करता है।

अधिक जानकारी के लिए http://us.php.net/manual/en/function.urlencode.php देखें।

+0

tht मेरे लिए काम करता है – Andromeda

48

पीएचपी rawUrlEncode() == जावास्क्रिप्ट encodeURIComponent()

पीएचपी rawUrlDecode() == जावास्क्रिप्ट decodeURIComponent()

+1

सावधान रहें कि php urlencode जावास्क्रिप्ट के साथ संगत नहीं है, इसलिए आपको rawUrlEncode का उपयोग करना चाहिए –

+0

'+' चरित्र के लिए काम नहीं करता है! – coderunner

+0

मेरे लिए काम (((PHP)) $ msg = array(); $ msg ['जोड़'] = rawUrlEncode ($ complexAddsWithHTML मार्कअप); echo json_encode ($ msg); ...... (((jQuery AJAX डेटा टाइप जैसन)) decodeURIComponent (msg.adds); – Coisox

2

इस प्रयास करें:

return decodeURIComponent((str + '').replace(/\+/g, '%20')); 

स्रोत: http://phpjs.org/functions/urldecode:572

+1

मुझे लगता है कि इसे 'प्रतिस्थापित करना चाहिए (/ \ +/g,' ')) ' – gregmatys

3

कोष्ठक इस पोस्ट में जो भी कहा गया है, उसके लिए अपवाद हैं।

गीक मोड पर:

झूठी

PHP rawUrlEncode() !== JavaScript encodeURIComponent() 

लेकिन सच

PHP rawUrlEncode() == JavaScript encodeURIComponent() 

दूसरे शब्दों में, वहाँ कई विशेष वर्ण हैं जो में के रूप में सुरक्षित नहीं माने जाते हैं rawurlencode जब वे encodeURIComponent में हैं।

संबंधित मुद्दे