मैं एक खोज पृष्ठ बना रहा हूँ, जहाँ आप एक खोज क्वेरी टाइप करते हैं और फ़ॉर्म सबमिट किया जाता है search.php?query=your query
। PHP फ़ंक्शन क्या सबसे अच्छा है और मुझे खोज क्वेरी को एन्कोडिंग / डिकोड करने के लिए उपयोग करना चाहिए?
file_get_contents
मैं एक खोज पृष्ठ बना रहा हूँ, जहाँ आप एक खोज क्वेरी टाइप करते हैं और फ़ॉर्म सबमिट किया जाता है search.php?query=your query
। PHP फ़ंक्शन क्या सबसे अच्छा है और मुझे खोज क्वेरी को एन्कोडिंग / डिकोड करने के लिए उपयोग करना चाहिए?
file_get_contents
जवाबों:
URI क्वेरी के उपयोग के लिए urlencode
/ urldecode
; कुछ और उपयोग के लिए rawurlencode
/ rawurldecode
।
के बीच का अंतर है urlencode
और rawurlencode
वह है
urlencode
आवेदन के दौरान एन्कोड / x-www-form-urlencoded (स्थान के साथ एन्कोड किया गया है +
)rawurlencode
एन्कोडिंग सादे प्रतिशत-एन्कोडिंग के अनुसार (अंतरिक्ष के साथ एन्कोड किया गया है %20
)।+
के बजाय %20
। और इसके अलावा, एप्लिकेशन / x-www-form-urlencoded का उपयोग फ़ॉर्म डेटा को एन्कोड करने के लिए किया जाता है जबकि Percent-Encoding का अधिक सामान्य उपयोग होता है।
urldecode
। फिर, यूआरआई पथ (जैसे /a/path with spaces/
) और यूआरआई टुकड़ा (जैसे #fragment
) के बारे में क्या । क्या मुझे हमेशा rawurldecode
इन दोनों का उपयोग करना चाहिए ?
rawurlencode
; लेकिन POST और GET फील्ड्स के लिए जाना urlencode
(लाइक /? फोल्डर =
Cunningly नाम urlencode () और urldecode () ।
हालांकि, अगर आप उपयोग करने की आवश्यकता नहीं होनी चाहिए urldecode()
कि में प्रदर्शित चर पर $_POST
और $_GET
।
"name=b&age=c&location=d"
AJAX के माध्यम से पीएचपी फ़ाइल में भेजे गए बुनियादी मापदंडों (जैसे ) को एनकोड करने की आवश्यकता है ?
यहां मेरा उपयोग मामला है, जिसके लिए एक असाधारण मात्रा में एन्कोडिंग की आवश्यकता है। हो सकता है कि आपको लगता है कि यह विवादित है, लेकिन हम इसे उत्पादन पर चलाते हैं। संयोग से, यह हर प्रकार के एन्कोडिंग को कवर करता है, इसलिए मैं एक ट्यूटोरियल के रूप में पोस्ट कर रहा हूं।
हमारी वेबसाइट पर किसी ने सिर्फ एक प्रीपेड गिफ्ट कार्ड ("टोकन") खरीदा है। टोकन के पास उन्हें भुनाने के लिए संबंधित URL होते हैं। यह ग्राहक URL को किसी और को ईमेल करना चाहता है। हमारे वेब पेज में एक mailto
लिंक शामिल है जो उन्हें ऐसा करने देता है।
// 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 = '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 with that mailto link
echo '<a href="' . htmlspecialchars($mailToUri) . '">Email your friend</a>';
ध्यान दें: ऊपर माना गया है कि आप किसी text/html
दस्तावेज़ में आउटपुट कर रहे हैं । यदि आपका आउटपुट मीडिया प्रकार है text/json
तो बस उपयोग करें $retval['url'] = $mailToUri;
क्योंकि आउटपुट एन्कोडिंग द्वारा नियंत्रित किया जाता है json_encode()
।
तुम्हे देखना चाहिए:
"args": {
"token": "w%a&!e#\"^2(^@azW"
},
और निश्चित रूप से यह ऊपर का JSON प्रतिनिधित्व है $token
।
mailto:
HTTP नहीं है), आप उपयोग कर सकते हैं $mailToUri 'mailto:?' . http_build_query(['subject'=>$subject, 'body'=>$body], null, '&', PHP_QUERY_RFC3986);
।
आप URL एनकोडिंग कार्य का उपयोग कर सकते हैं PHP के पास है
rawurlencode()
समारोह
एएसपी के पास है
Server.URLEncode()
समारोह
जावास्क्रिप्ट में आप इसका उपयोग कर सकते हैं
encodeURIComponent()
समारोह।
आप किस प्रकार के RFC मानक एन्कोडिंग के आधार पर प्रदर्शन करना चाहते हैं या यदि आपको अपने एन्कोडिंग को कस्टमाइज़ करने की आवश्यकता है, तो आप अपनी कक्षा बनाना चाहते हैं।
/**
* UrlEncoder make it easy to encode your URL
*/
class UrlEncoder{
public const STANDARD_RFC1738 = 1;
public const STANDARD_RFC3986 = 2;
public const STANDARD_CUSTOM_RFC3986_ISH = 3;
// add more here
static function encode($string, $rfc){
switch ($rfc) {
case self::STANDARD_RFC1738:
return urlencode($string);
break;
case self::STANDARD_RFC3986:
return rawurlencode($string);
break;
case self::STANDARD_CUSTOM_RFC3986_ISH:
// Add your custom encoding
$entities = ['%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D'];
$replacements = ['!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]"];
return str_replace($entities, $replacements, urlencode($string));
break;
default:
throw new Exception("Invalid RFC encoder - See class const for reference");
break;
}
}
}
उदाहरण का उपयोग करें:
$dataString = "https://www.google.pl/search?q=PHP is **great**!&id=123&css=#kolo&email=me@liszka.com)";
$dataStringUrlEncodedRFC1738 = UrlEncoder::encode($dataString, UrlEncoder::STANDARD_RFC1738);
$dataStringUrlEncodedRFC3986 = UrlEncoder::encode($dataString, UrlEncoder::STANDARD_RFC3986);
$dataStringUrlEncodedCutom = UrlEncoder::encode($dataString, UrlEncoder::STANDARD_CUSTOM_RFC3986_ISH);
उत्पादन होगा:
string(126) "https%3A%2F%2Fwww.google.pl%2Fsearch%3Fq%3DPHP+is+%2A%2Agreat%2A%2A%21%26id%3D123%26css%3D%23kolo%26email%3Dme%40liszka.com%29"
string(130) "https%3A%2F%2Fwww.google.pl%2Fsearch%3Fq%3DPHP%20is%20%2A%2Agreat%2A%2A%21%26id%3D123%26css%3D%23kolo%26email%3Dme%40liszka.com%29"
string(86) "https://www.google.pl/search?q=PHP+is+**great**!&id=123&css=#kolo&email=me@liszka.com)"
* RFC मानकों के बारे में अधिक जानकारी प्राप्त करें : https://datatracker.ietf.org/doc/rfc3986/ और urlencode बनाम rawurlencode?
foo bar
कि टेक्स्ट फ़ील्ड में डालना ,foo+bar
URL में बनाना)।