2011-12-28 6 views
5

मैं URL में अनुरोध को पढ़ने के लिए निम्नलिखित php स्क्रिप्ट है:php REQUEST_URI

$id = '/' != ($_SERVER['REQUEST_URI']) ? 
    str_replace('/?id=' ,"", $_SERVER['REQUEST_URI']) : 0; 

यह इस्तेमाल किया गया था जब URL http://www.testing.com/?id=123

है लेकिन अब मैं चाहता हूँ URL स्ट्रिंग में 1 अधिक चर पारित http://www.testing.com/?id=123&othervar=123

दोनों चर को पुनः प्राप्त करने के लिए उपरोक्त कोड को कैसे बदलना चाहिए?

उत्तर

11

आप या तो रेगेक्स का उपयोग कर सकते हैं, या str_replace का उपयोग कर जारी रख सकते हैं।

ईजी।

$url = parse_url($_SERVER['REQUEST_URI']); 

if ($url != '/') { 
    parse_str($url['query']); 
    echo $id; 
    echo $othervar; 
} 

आउटपुट होगा: http://www.testing.com/123/123

+0

मुझे इसे मारो! साथ ही, सरल बनाने के लिए $ _SERVER ['QUERY_STRING'] का उपयोग करने पर विचार करें। –

+0

तो यह $ url = $ _SERVER ['REQUEST_URI'] जैसा कुछ होगा; यदि ($ url! = '/') { $ id = str_replace ('/? Id =', null, $ _SERVER ['REQUEST_URI']); $ othervar = str_replace ('और अन्यvar =', '/', $ _SERVER ['REQUEST_URI']); } echo $ id // 123 echo $ othervar // 123 – user1118904

+0

मैं पैटर्न मिलान का उपयोग करने पर भी विचार करता हूं। – nand

1

शायद

$id = isset($_GET['id'])?$_GET['id']:null; 

और

$other_var = isset($_GET['othervar'])?$_GET['othervar']:null; 
5

मुझे लगता है कि parse_str आप जो खोज रहे हैं यह है कि, कुछ इस तरह करना चाहिए आपके लिए चाल:

parse_str($_SERVER['QUERY_STRING'], $vars); 

फिर $vars सरणी सभी पास किए गए तर्कों को रखेगी।

+0

वाह बहुत अच्छा है: डी धन्यवाद! – user1118904

0

के बाद से यूआरएल के माध्यम से पारित वार्स $ _GET वार्स हैं, तो आप filter_input() फ़ंक्शन का उपयोग कर सकते हैं:

$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT); 
$othervar = filter_input(INPUT_GET, 'othervar', FILTER_SANITIZE_FULL_SPECIAL_CHARS); 

यह प्रत्येक वर का मान संग्रहीत होता है और स्वच्छ/उन्हें भी मान्य।

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