URL स्ट्रिंग से पैरामीटर कैसे प्राप्त करें?


197

मेरे पास एक HTML फॉर्म फ़ील्ड है $_POST["url"]जिसमें मान के रूप में कुछ URL स्ट्रिंग्स हैं। उदाहरण मूल्य हैं:

https://example.com/test/1234?email=xyz@test.com
https://example.com/test/1234?basic=2&email=xyz2@test.com
https://example.com/test/1234?email=xyz3@test.com
https://example.com/test/1234?email=xyz4@test.com&testin=123
https://example.com/test/the-page-here/1234?someurl=key&email=xyz5@test.com

आदि।

मैं केवल कैसे प्राप्त कर सकता हूं email इन URL / मानों से पैरामीटर ?

कृपया ध्यान दें कि मुझे ब्राउज़र पता बार से ये तार नहीं मिल रहे हैं।


मैं थोड़ा भ्रमित हूं, कृपया Q ...
Dexter Huinda

क्या आप URL को स्ट्रिंग्स के रूप में मानने के लिए कह / पूछ रहे हैं?
hjpotter92

यदि आप अपने उदाहरणों की तरह, स्ट्रिंग्स से ईमेल भाग "मेल" करना चाहते हैं, तो नियमित अभिव्यक्ति का उपयोग करें। के रूप में सरल /(email=\w\@\w\.\w)/या अधिक उन्नत मिलान तकनीक हो सकता है। बस आपको आइडिया दे रहा हूं। preg_matchसमारोह देखें : php.net/manual/en/function.preg-match.php
Dexter Huinda


जवाबों:


414

आप parse_url()और उसके parse_str()लिए उपयोग कर सकते हैं ।

$parts = parse_url($url);
parse_str($parts['query'], $query);
echo $query['email'];

यदि आप $urlPHP के साथ गतिशील रूप से प्राप्त करना चाहते हैं , तो इस प्रश्न पर एक नज़र डालें:

PHP में पूरा URL प्राप्त करें


2
इसके काम करने पर मुझे इस तरह से लॉग इन करने में त्रुटि हो रही है: PHP सूचना: अपरिभाषित सूचकांक: क्वेरी
श्रीनिवास ०

113

के बाद सभी मापदंडों को ऐरे ?का उपयोग करके एक्सेस किया जा सकता है $_GET। इसलिए,

echo $_GET['email'];

यूआरएल से ईमेल निकालेंगे।


50
यह प्रश्न का उत्तर नहीं है, लेकिन यह वह उत्तर है जिसकी मुझे तलाश थी जब मैंने प्रश्न के लिए Googles से पूछा, तो Google को सही ढंग से उत्तर देने के लिए +1।
बिलियनेयर

1
यह प्रश्न का उत्तर नहीं हो सकता है, लेकिन URL पैरामीटर प्राप्त करने का सही और आसान तरीका है - यदि वे सही तरीके से सेट किए गए हैं: https://example.com?email=myemail@example.com $email = $_GET['email']; $email === 'myemail@example.com';
CheddarMonkey

45

उपयोग parse_url () और parse_str () तरीकों। parse_url()URL स्ट्रिंग को उसके भागों के सहयोगी सरणी में पार्स करेगा। चूंकि आप केवल URL का एक ही हिस्सा चाहते हैं, इसलिए आप अपने इच्छित भाग के साथ एक स्ट्रिंग मान वापस करने के लिए एक शॉर्टकट का उपयोग कर सकते हैं। अगला, parse_str()क्वेरी स्ट्रिंग में प्रत्येक पैरामीटर के लिए चर बनाएगा। मुझे वर्तमान संदर्भ प्रदूषित करना पसंद नहीं है, इसलिए एक दूसरा पैरामीटर प्रदान करना सभी चर को एक सहयोगी सरणी में रखता है।

$url = "https://mysite.com/test/1234?email=xyz4@test.com&testin=123";
$query_str = parse_url($url, PHP_URL_QUERY);
parse_str($query_str, $query_params);
print_r($query_params);

//Output: Array ( [email] => xyz4@test.com [testin] => 123 ) 

8

$_GET['email']URL में पैरामीटर के लिए उपयोग करें । $_POST['email']स्क्रिप्ट के लिए पोस्ट किए गए डेटा का उपयोग करें । या _$REQUESTदोनों के लिए उपयोग करें । इसके अलावा, जैसा कि उल्लेख किया गया है, आप parse_url()URL के सभी भागों को वापस करने वाले फ़ंक्शन का उपयोग कर सकते हैं । 'क्वेरी' नामक भाग का उपयोग करें - वहां आप अपना ईमेल पैरामीटर पा सकते हैं। अधिक जानकारी: http://php.net/manual/en/function.parse-url.php


5
ओपी ने कहा कि उन्हें यूआरएल नहीं मिल रहे हैं address bar। ये URL केवल INकोड को स्ट्रिंग कर रहे हैं ।
दावचाना

7

ईमेल पता प्राप्त करने के लिए आप नीचे दिए गए कोड का उपयोग कर सकते हैं? URL में

<?php
if (isset($_GET['email'])) {
    echo $_GET['email'];
}


3
ओपी ने वर्तमान पृष्ठ में URL नहीं एक स्ट्रिंग से चर निकालने का अनुरोध किया। parse_url () स्ट्रिंग को सही रूप में स्वरूपित करने वाला सही उत्तर है।
ब्लोफर

6

जैसा कि अन्य उत्तर में बताया गया है, सबसे अच्छा समाधान उपयोग कर रहा है

parse_url()

आपको parse_url()और के संयोजन का उपयोग करने की आवश्यकता हैparse_str()

parse_url()पार्स URL और उसके घटक है कि आप क्वेरी स्ट्रिंग का उपयोग कर प्राप्त कर सकते हैं वापसी queryकुंजी। फिर आपको parse_str()उस पार्स क्वेरी स्ट्रिंग का उपयोग करना चाहिए और मानों को चर में वापस करना चाहिए ।

$url = "https://example.com/test/1234?basic=2&email=xyz2@test.com";
parse_str(parse_url($url)['query'], $params);
echo $params['email']; // xyz2@test.com

इसके अलावा आप रेगेक्स का उपयोग करके यह काम कर सकते हैं ।

preg_match()

आप preg_match()URL से क्वेरी स्ट्रिंग का विशिष्ट मान प्राप्त करने के लिए उपयोग कर सकते हैं ।

preg_match("/&?email=([^&]+)/", $url, $matches);
echo $matches[1]; // xyz2@test.com

preg_replace()

साथ ही आप preg_replace()इस काम को एक लाइन में करने के लिए उपयोग कर सकते हैं !

$email = preg_replace("/^https?:\/\/.*\?.*email=([^&]+).*$/", "$1", $url);
// xyz2@test.com

3

मैंने @Ruel उत्तर से फ़ंक्शन बनाया । आप इसका उपयोग कर सकते हैं:

function get_valueFromStringUrl($url , $parameter_name)
{
    $parts = parse_url($url);
    if(isset($parts['query']))
    {
        parse_str($parts['query'], $query);
        if(isset($query[$parameter_name]))
        {
            return $query[$parameter_name];
        }
        else
        {
            return null;
        }
    }
    else
    {
        return null;
    }
}

उदाहरण:

$url = "https://example.com/test/the-page-here/1234?someurl=key&email=xyz5@test.com";
echo get_valueFromStringUrl($url , "email");

@Ruel को धन्यवाद


1
$uri = $_SERVER["REQUEST_URI"];
$uriArray = explode('/', $uri);
$page_url = $uriArray[1];
$page_url2 = $uriArray[2];
echo $page_url; <- see the value

यह php का उपयोग करके मेरे लिए बहुत अच्छा काम कर रहा है


1
क्या आप कृपया उत्तर को अधिक विस्तृत करने का प्रयास कर सकते हैं। उपरोक्त उत्तर से आपका क्या मतलब है, यह जानना मुश्किल है।
मुस्तफा एहसान अलोकोज़े

1
$web_url = 'http://www.writephponline.com?name=shubham&email=singh@gmail.com';
$query = parse_url($web_url, PHP_URL_QUERY);
parse_str($query, $queryArray);

echo "Name: " . $queryArray['name'];  // Result: shubham
echo "EMail: " . $queryArray['email']; // Result:singh@gmail.com

1

एक और अधिक सुरक्षित उत्तर जो मुझे आश्चर्यचकित करता है, उसका उल्लेख यहां अभी तक नहीं किया गया है:

filter_input

तो सवाल के मामले में आप URL से पैरामीटर प्राप्त करने के लिए इसका उपयोग कर सकते हैं:

$email = filter_input( INPUT_GET, 'email', FILTER_SANITIZE_EMAIL );

चर के अन्य प्रकार के लिए, आप चाहते हैं कि एक अलग / उपयुक्त फिल्टर चुनें जैसे FILTER_SANITIZE_STRING

मुझे लगता है कि यह सवाल ठीक उसी तरह से अधिक है जो सवाल पूछता है - URL पैरामीटर से कच्चा डेटा प्राप्त करना। लेकिन यह एक-पंक्ति शॉर्टकट है जो इस परिणाम के समान है:

$email = $_GET['email'];
$email = filter_var( $email, FILTER_SANITIZE_EMAIL );

इस तरह चर को हथियाने की आदत पड़ सकती है।


जो, URL से इसे प्राप्त नहीं करने के बारे में प्रश्नों की अंतिम पंक्ति नहीं देखी थी ... फिर भी किसी के लिए उपयोगी होने की स्थिति में इसे यहाँ छोड़ देना।
चौकोर

0

लारवेल में, मैं उपयोग कर रहा हूँ:

private function getValueFromString(string $string, string $key)
{
    parse_str(parse_url($string, PHP_URL_QUERY), $result);

    return isset($result[$key]) ? $result[$key] : null;
}

0

गतिशील फ़ंक्शन जो स्ट्रिंग यूआरएल को पार्स करता है और URL में पारित क्वेरी पैरामीटर का मूल्य प्राप्त करता है

function getParamFromUrl($url,$paramName){
  parse_str(parse_url($url,PHP_URL_QUERY),$op);// fetch query parameters from string and convert to associative array
  return array_key_exists($paramName,$op) ? $op[$paramName] : "Not Found"; // check key is exist in this array
}

परिणाम प्राप्त करने के लिए फ़ंक्शन को कॉल करें

echo getParamFromUrl('https://google.co.in?name=james&surname=bond','surname'); // bond will be o/p here

-3

URL स्ट्रिंग से पैरामीटर प्राप्त करने के लिए, मैंने निम्न फ़ंक्शन का उपयोग किया।

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : sParameterName[1];
        }
    }
};
var email = getUrlParameter('email');

यदि कई URL स्ट्रिंग्स हैं, तो आप उन सभी URL स्ट्रिंग्स से पैरामीटर 'ईमेल' प्राप्त करने के लिए लूप का उपयोग कर सकते हैं और उन्हें सरणी में स्टोर कर सकते हैं।


1
मुझे ब्राउज़र पता बार से ये तार नहीं मिल रहे हैं, लेकिन आपने इसके लिए समाधान पोस्ट किया है
मोहम्मद

ओपी PHP के बारे में पूछ रहा था, जावास्क्रिप्ट के बारे में नहीं
याकूब अल्वारेज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.