खोज…


एक URL पार्स करना

URL को उसके अलग-अलग घटकों में अलग करने के लिए, parse_url() उपयोग करें:

$url = 'http://www.example.com/page?foo=1&bar=baz#anchor';
$parts = parse_url($url);

उपरोक्त निष्पादित करने के बाद, $parts की सामग्री होगी:

Array
(
    [scheme] => http
    [host] => www.example.com
    [path] => /page
    [query] => foo=1&bar=baz
    [fragment] => anchor
)

आप चुनिंदा रूप से url के सिर्फ एक घटक को भी वापस कर सकते हैं। सिर्फ क्वेरिस्ट्रिंग वापस करने के लिए:

$url = 'http://www.example.com/page?foo=1&bar=baz#anchor';
$queryString = parse_url($url, PHP_URL_QUERY);

निम्न में से कोई भी स्थिरांक स्वीकार किए जाते हैं: PHP_URL_SCHEME , PHP_URL_HOST , PHP_URL_PORT , PHP_URL_USER , PHP_URL_PASS , PHP_URL_PATH , PHP_URL_QUERY और PHP_URL_FRAGMENT

कुंजी मान जोड़े में क्वेरी स्ट्रिंग को आगे पार्स करने के लिए parse_str() उपयोग करें:

$params = [];
parse_str($queryString, $params);

उपरोक्त निष्पादन के बाद, $params सरणी निम्नलिखित के साथ आबाद होगी:

Array
(
    [foo] => 1
    [bar] => baz
)

दूसरे URL पर रीडायरेक्ट करना

ब्राउज़र को किसी भिन्न URL पर पुनर्निर्देशित करने के लिए आप header() फ़ंक्शन का उपयोग कर सकते हैं:

$url = 'https://example.org/foo/bar';
if (!headers_sent()) { // check headers - you can not send headers if they already sent
  header('Location: ' . $url);
  exit; // protects from code being executed after redirect request
} else {
  throw new Exception('Cannot redirect, headers already sent');
}

आप किसी रिश्तेदार URL पर पुनर्निर्देशित कर सकते हैं (यह आधिकारिक HTTP विनिर्देश का हिस्सा नहीं है, लेकिन यह सभी ब्राउज़रों में काम करता है):

$url = 'foo/bar';
if (!headers_sent()) {
  header('Location: ' . $url);
  exit;
} else {
  throw new Exception('Cannot redirect, headers already sent');
}

यदि हेडर भेजे गए हैं, तो आप वैकल्पिक रूप से meta refresh HTML टैग भेज सकते हैं।

चेतावनी: मेटा रीफ़्रेश टैग HTML पर निर्भर करता है जिसे क्लाइंट द्वारा ठीक से संसाधित किया जा रहा है, और कुछ ऐसा नहीं करेंगे। सामान्य तौर पर, यह केवल वेब ब्राउज़र में काम करता है। इसके अलावा, विचार करें कि यदि हेडर भेजे गए हैं, तो आपके पास एक बग हो सकता है और इसके लिए अपवाद को ट्रिगर करना चाहिए।

आप उपयोगकर्ताओं के लिए क्लिक करने के लिए एक लिंक भी प्रिंट कर सकते हैं, ऐसे ग्राहकों के लिए जो मेटा ताज़ा टैग को अनदेखा करते हैं:

$url = 'https://example.org/foo/bar';
if (!headers_sent()) {
  header('Location: ' . $url);
} else {
  $saveUrl = htmlspecialchars($url); // protects from browser seeing url as HTML
  // tells browser to redirect page to $saveUrl after 0 seconds
  print '<meta http-equiv="refresh" content="0; url=' . $saveUrl . '">';
  // shows link for user
  print '<p>Please continue to <a href="' . $saveUrl . '">' . $saveUrl . '</a></p>';
}
exit;

किसी सरणी से URL-एन्कोडेड क्वेरी स्ट्रिंग बनाएँ

http_build_query() एक सरणी या ऑब्जेक्ट से एक क्वेरी स्ट्रिंग बनाएगा। इन स्ट्रिंग को GET अनुरोध बनाने के लिए URL में जोड़ा जा सकता है, या उदाहरण के लिए, POUR के साथ POST अनुरोध में उपयोग किया जा सकता है।

$parameters = array(
    'parameter1' => 'foo',
    'parameter2' => 'bar',
);
$queryString = http_build_query($parameters);

$queryString के निम्नलिखित मूल्य होंगे:

parameter1=foo&parameter2=bar

http_build_query() बहु-आयामी सरणियों के साथ भी काम करेगा:

$parameters = array(
    "parameter3" => array(
        "sub1" => "foo",
        "sub2" => "bar",
    ),
    "parameter4" => "baz",
);
$queryString = http_build_query($parameters);

$queryString का यह मान होगा:

parameter3%5Bsub1%5D=foo&parameter3%5Bsub2%5D=bar&parameter4=baz

जो URL- एन्कोडेड संस्करण है

parameter3[sub1]=foo&parameter3[sub2]=bar&parameter4=baz


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow