मैं एक खोज पृष्ठ बना रहा हूं, जहां आप एक खोज क्वेरी टाइप करते हैं और फॉर्म search.php?query=your query
पर सबमिट किया गया है। PHP फ़ंक्शन सबसे अच्छा क्या है और मुझे खोज क्वेरी को एन्कोडिंग/डीकोड करने के लिए उपयोग करना चाहिए?PHP में स्ट्रिंग को सही तरीके से एन्कोड करने के लिए URL कैसे करें?
उत्तर
यूआरआई क्वेरी के लिए urlencode
/urldecode
का उपयोग करें; किसी और चीज के लिए rawurlencode
/rawurldecode
का उपयोग करें।
urlencode
और rawurlencode
के बीच अंतर यह है कि
urlencode
application/x-www-form-urlencoded के अनुसार encodes (अंतरिक्ष+
साथ इनकोडिंग), जबकिrawurlencode
सादा Percent-Encoding (अंतरिक्ष के अनुसार के साथ इनकोडिंग encodes है%20
)।
* एप्लिकेशन/एक्स-www-form-urlencoded * केवल एक विशेष रूप है * प्रतिशत-एन्कोडिंग * और केवल HTML फॉर्म डेटा एन्कोड करने के लिए लागू होता है। – Gumbo
कौन सा एन्कोडिंग बेहतर है, फॉर्म-urlencoded या प्रतिशत? –
@ क्लिक करें उपरोक्त: उनकी तुलना इस तरह से नहीं की जा सकती है। * एप्लिकेशन/एक्स-www-form-urlencoded * प्रारूप * * * प्रतिशत-एन्कोडिंग * प्रारूप है, सिवाय इसके कि अंतरिक्ष '% 20' के बजाय' + 'के साथ एन्कोड किया गया है। और इसके अलावा, * एप्लिकेशन/एक्स-www-form-urlencoded * का उपयोग फॉर्म डेटा को एन्कोड करने के लिए किया जाता है जबकि * प्रतिशत-एन्कोडिंग * का अधिक सामान्य उपयोग होता है। – Gumbo
चालाकी से नामित urlencode() और urldecode()।
हालांकि, आपको और $_GET
में दिखाई देने वाले चर पर urldecode()
का उपयोग करने की आवश्यकता नहीं है।
का उपयोग कर खोजकर्ता स्क्रिप्ट को कॉल करने जा रहा हूं। चालाकी से नामित' rawurlencode' और 'rawurldecode' ... –
यहां मेरा उपयोग केस है, जिसके लिए असाधारण मात्रा में एन्कोडिंग की आवश्यकता होती है। शायद आपको लगता है कि यह प्रवाहित है, लेकिन हम इसे उत्पादन पर चलाते हैं। संयोग से, इसमें प्रत्येक प्रकार के एन्कोडिंग शामिल हैं, इसलिए मैं एक ट्यूटोरियल के रूप में पोस्ट कर रहा हूं।
उपयोग मामले वर्णन
किसी ने बस हमारी वेबसाइट पर एक प्रीपेड उपहार कार्ड ("टोकन") खरीदा है। टोकन के पास उन्हें रिडीम करने के लिए संबंधित यूआरएल हैं। यह ग्राहक किसी और को ईमेल करना चाहता है। हमारे वेब पेज में mailto
लिंक शामिल है जो उन्हें ऐसा करने देता है।
PHP कोड
// The order system generates some opaque token
$token = 'w%a&!e#"^2(^@azW';
// Here is a URL to redeem that token
$redeemUrl = 'https://httpbin.org/get?token=' . urlencode($token);
// Actual contents we want for the email
$subject = 'I just bought this for you';
$body = 'I just bought a widget for you. Please enter your shipping details here: ' . $redeemUrl;
// A URI for the email as prescribed
$mailToUri = 'mailto:?subject=' . rawurlencode($subject) . '&body=' . rawurlencode($body);
// Print an HTML element that links to that page
echo '<a href="' . htmlspecialchars($mailToUri) . '">Email your friend</a>';
ध्यान दें: ऊपर समझती है कि आप एक text/html
दस्तावेज़ में outputting रहे हैं। यदि आपका आउटपुट मीडिया प्रकार text/json
है तो बस $retval['url'] = $mailToUri;
का उपयोग करें क्योंकि आउटपुट एन्कोडिंग json_encode()
द्वारा प्रबंधित की जाती है।
टेस्ट मामले
- एक PHP परीक्षण स्थल पर कोड चलाने
- ईमेल भेजें लिंक
- क्लिक करें (वहाँ एक विहित एक मैं यहाँ उल्लेख करना चाहिए है?)
- ईमेल प्राप्त करें
- उस लिंक पर क्लिक करें
आप देखना चाहिए:
"args": {
"token": "w%a&!e#\"^2(^@azW"
},
और निश्चित रूप से यह ऊपर $token
की JSON प्रतिनिधित्व है।
क्या आपको कोई समस्या है? ब्राउज़र और PHP को इसे स्वचालित रूप से पहले से संभालना चाहिए (उदा। टेक्स्ट फ़ील्ड में 'foo bar' डालना, URL में' foo + bar' बनाता है)। –
@ फ़ेलिक्स मैं 'file_get_contents' –