निर्देशिका सेपरेटर्स/पथ में छोड़कर urlencode का कोई तरीका है?urlencode को छोड़कर/
तरह
urlencode('/this/is/my/file right here.jpg');
निर्देशिका सेपरेटर्स/पथ में छोड़कर urlencode का कोई तरीका है?urlencode को छोड़कर/
तरह
urlencode('/this/is/my/file right here.jpg');
आप
explode
उपयोग कर सकते हैं पथ के सेगमेंट में अपने पथ विभाजित करने के लिए,array_map
प्रत्येक आइटम पर rawurlencode
लागू करने के लिए (urlencode
का उपयोग नहीं करते, कि केवल application/x-www-form-urlencoded encoded के लिए है क्वेरी तर्क!), औरimplode
सेगमेंट को एकसाथ वापस रखने के लिए।तो सब एक साथ एक पंक्ति में:
$path = implode('/', array_map('rawurlencode', explode('/', $path)));
उन्हें फिर से बदलें:
str_replace('%2F', '/', urlencode('/this/is/my/file right here.jpg'));
ध्यान दें कि यदि आप एक क्वेरी स्ट्रिंग में परिणाम पारित करने के लिए जा रहे हैं, आप ऊपर प्रतिस्थापन ऐसा नहीं करना चाहिए - केवल urlencode
का उपयोग । यदि आप इसे पथ भाग में उपयोग कर रहे हैं, तो आपको इसके बजाय rawurlencode का उपयोग करना चाहिए।
यह एक बहुत अच्छा लग रहा है। मुझे लगता है कि चयनित उत्तर से यह बहुत तेज होना चाहिए। –
इसमें 99% मामले शामिल हैं। 1% वे पथ हैं जिनमें 2% एफ को परिवर्तित करने का इरादा नहीं है बल्कि पथ स्ट्रिंग का वास्तविक भाग है। – Tyblitz
@ टिब्लिट्ज 2% एफ को 2% 25F तक एन्कोड किया जाएगा यदि यह पथ स्ट्रिंग का हिस्सा था। – Phil
यह आपकी समस्या का समाधान करना चाहिए।
str_replace("%2F","/",urlencode('/this/is/my/file right here.jpg'));
$array = explode('/', '/this/is/my/file right here.jpg');
foreach ($array as &$value) {
$value = urlencode($value);
}
print implode('/', $array);
यह करने का सबसे संकल्पनात्मक सही तरीका होगा, हालांकि व्यवहार में 'str_replace' आसान होगा। 'Rawurlencode' के लिए किसी भी तरह से +1; यह हमेशा सही बात है, जबकि 'urlencode' कभी-कभी गलत बात होती है। – bobince