2010-09-17 6 views
5

URL में प्रत्येक पैरामीटर में कई मान हो सकते हैं। मैं उन्हें कैसे अलग कर सकता हूं? यहाँ एक उदाहरण है:किसी URL में मानों को अलग करना, न कि

http://www.example.com/search?queries=cars,phones 

तो मैं 2 अलग चीजों के लिए खोज करना चाहते हैं: कारों और फोन (यह सिर्फ एक काल्पनिक उदाहरण है)। समस्या विभाजक है, एक अल्पविराम। कोई उपयोगकर्ता अपनी क्वेरी के हिस्से के रूप में खोज फ़ॉर्म में अल्पविराम दर्ज कर सकता है और फिर यह खराब हो जाएगा। ,

http://www.example.com/login?name1=harry&name2=bob 

वहाँ कोई वास्तविक समस्या नहीं है वास्तव में मुझे लगता है कि यह कैसे यूआरएल इस स्थिति को संभालने के लिए डिजाइन किए गए थे है: मैं 2 अलग URL पैरामीटर हो सकता था। लेकिन मैं इसे अपनी विशेष स्थिति में उपयोग नहीं कर सकता। यह कहने के लिए एक अलग लंबी पोस्ट की आवश्यकता क्यों है ... मुझे मूल्यों को अलग करने की आवश्यकता है।

मेरा प्रश्न मूल रूप से है, क्या एक यूआरएल एन्कोडेबल कैरेक्टर या वैल्यू है जो संभावित रूप से किसी फॉर्म (टेक्स्टरेरा या इनपुट) में दर्ज नहीं किया जा सकता है जिसे मैं विभाजक के रूप में उपयोग कर सकता हूं? एक शून्य चरित्र की तरह? या एक दृश्यमान चरित्र?

अद्यतन: आपके बहुत तेज़ प्रतिक्रियाओं के लिए सभी को धन्यवाद। मुझे वही पैरामीटर नाम उदाहरण भी सूचीबद्ध करना चाहिए था, लेकिन मेरे मामले में मामला दर्ज करना चाहिए ताकि वह कोई विकल्प न हो। हमने इसे एक मूल्य विभाजक के रूप में% 00 यूआरएल एन्कोडेड वर्ण (यूटीएफ -8 \ u0000) का उपयोग करके हल किया।

+0

उपयोगकर्ता द्वारा पहले स्थान पर मूल्यों को इनपुट कैसे किया जा रहा है? कुछ पाठ फ़ील्ड? – Andrew

+0

आप अपने पैरामीटर के मान को एन्कोड क्यों नहीं करते हैं? अगर वे% 20 दर्ज करते हैं तो% एन्कोड हो जाएगा, इसलिए यह वास्तव में कोई समस्या नहीं पैदा करेगा, या क्या मुझे कुछ याद आ रहा है? – Gazillion

+0

मान मानक एचटीएमएल फॉर्म तत्वों द्वारा इनपुट किया जा रहा है। % 20 के साथ समस्या यह नहीं है कि वे% 20 दर्ज करेंगे, यह है कि वे% 20 का प्रतिनिधित्व करेंगे (मुझे लगता है कि एक जगह)। –

उत्तर

12

इसका मानक दृष्टिकोण दो बार एक ही कुंजी नाम का उपयोग करना है।

http://www.example.com/search?queries=cars&queries=phones 

अधिकांश फॉर्म पुस्तकालय आपको इसे स्वचालित रूप से सरणी के रूप में एक्सेस करने की अनुमति देंगे। (यदि आप PHP का उपयोग कर रहे हैं (और $_POST/GET का उपयोग कर रहे हैं और पहिया को पुनर्निर्मित नहीं करते हैं) तो आपको नाम को queries[] पर बदलना होगा।)

+0

मैंने अपने अपडेट में उल्लेख किया है कि आप सही हैं यह एक विकल्प भी था, लेकिन मेरे मामले में मुझे वास्तव में पैरामीटर मान के भीतर मूल्यों को अलग करने की आवश्यकता है। ऑर्डर मामलों और पैरामीटर के समान नाम वाले अलग-अलग अलग-अलग मान होंगे (कभी-कभी केवल एक अलग क्रम के साथ) –

1

अपने स्वयं के विभाजक के साथ आएं जो किसी प्रश्न में प्रवेश करने की संभावना नहीं है। उदाहरण के लिए दो अंडरस्कोर '__'

+0

यह अनिवार्य रूप से मैं जो पूछ रहा था, लेकिन मुझे ऐसा कुछ चाहिए जो मानक HTML फॉर्म तत्व में प्रवेश करना असंभव होगा। –

0

ऐसा करने के लिए सबसे आसान काम कस्टम अलगाव जैसे [!! ValSep !!] का उपयोग करना होगा।

1

आप उन्हें प्रत्येक समान पैरामीटर नाम दे सकते हैं।

http://www.example.com/search?query=cars&query=phones

औसत सर्वर साइड HTTP एपीआई उन्हें एक सरणी के रूप में प्राप्त करने के लिए सक्षम है। आपके प्रश्न इतिहास के अनुसार, आप जेएसपी/सर्वलेट का उपयोग कर रहे हैं, ताकि आप इसके लिए HttpServletRequest#getParameterValues() का उपयोग कर सकें।

String[] queries = request.getParameterValues("query"); 
+0

हां, यह मेरे लिए काम नहीं करता है क्योंकि ऑर्डर मायने रखता है, मैंने थोड़ा और विस्तार से एक और जवाब में समझाया। मुझे खुशी है कि आपको मेरे अन्य प्रश्न याद हैं! आपकी मदद के लिए धन्यवाद! मुझे लगता है कि, इस मुद्दे पर मुझे एक अच्छा समाधान मिला (प्रश्न अद्यतन)। –

1

क्यों न केवल "||" कुछ करें? कोई भी जो खोज क्षेत्र में टाइप करता है, शायद अपने कीबोर्ड पर सो जाता है:} फिर इसे बैकएंड पर विस्फोट करें।

+0

शायद आप सही हो :)। लेकिन यह एक मानक विजेट तंत्र के लिए है जिसका उपयोग हजारों अलग-अलग परिस्थितियों में किया जाएगा। –

+0

अहह, ठीक है कि चीजों को बदलता है। उसके लिए माफ़ करना। – malonso

2

बस उपयोगकर्ता इनपुट को यूआरएल-एन्कोड करें ताकि उनका कॉमा % 2C बन जाए।

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