ইউআরএল স্ট্রিং থেকে প্যারামিটারগুলি কীভাবে পাবেন?


197

$_POST["url"]মান হিসাবে কিছু ইউআরএল স্ট্রিং থাকা আমার একটি HTML ফর্ম ক্ষেত্র রয়েছে । উদাহরণ মানগুলি হল:

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 গুলি / মানগুলি থেকে আমি কীভাবে কেবল প্যারামিটার পেতে পারি ?

দয়া করে নোট করুন যে আমি ব্রাউজারের অ্যাড্রেস বার থেকে এই স্ট্রিংগুলি পাচ্ছি না।


আমি কিছুটা বিভ্রান্ত, দয়া করে প্রশ্নটি বিস্তারিতভাবে বর্ণনা করুন ...
ডেক্সটার হুন্ডা

আপনি কি বলছেন / URL গুলিকে স্ট্রিং হিসাবে গণ্য করার জন্য বলছেন?
hjpotter92

যদি আপনি উদাহরণগুলির মতো স্ট্রিং থেকে ইমেল অংশটি "মিল" করতে চান তবে নিয়মিত প্রকাশ করুন। /(email=\w\@\w\.\w)/আরও বেশি উন্নত মেলানোর কৌশল হিসাবে সহজ হতে পারে । শুধু আপনাকে ধারণা দিচ্ছি। preg_matchফাংশনটি দেখুন : php.net/manual/en/function.preg-match.php
ডেক্সটার হুইন্ডা


উত্তর:


414

আপনি এটির জন্য parse_url()এবং এটি ব্যবহার করতে পারেন parse_str()

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

আপনি যদি $urlপিএইচপি দিয়ে গতিশীল পেতে চান তবে এই প্রশ্নটি একবার দেখুন:

পিএইচপি-তে সম্পূর্ণ URL পান


2
এটির কাজ কিন্তু আমি এই জাতীয় লগগুলিতে ত্রুটি পাচ্ছি: পিএইচপি বিজ্ঞপ্তি: অপরিজ্ঞাত সূচক: ক্যোয়ারী
শ্রীনিবাস

112

এর পরে সমস্ত পরামিতি অ্যারে ?ব্যবহার করে অ্যাক্সেস করা যায় $_GET। সুতরাং,

echo $_GET['email'];

url থেকে ইমেলগুলি বের করবে ract


50
এটি প্রশ্নের উত্তর নয়, তবে গুগলসকে প্রশ্নের জন্য জিজ্ঞাসা করার সময় আমি এই উত্তরটি খুঁজছিলাম, তাই গুগলের সঠিক উত্তর দেওয়ার জন্য +1।
বিলিনার

1
এটি প্রশ্নের উত্তর নাও হতে পারে তবে ইউআরএল প্যারামিটারগুলি পাওয়ার সঠিক এবং সহজতম উপায় - যদি সেগুলি সঠিকভাবে সেট করা থাকে: https://example.com?email=myemail@example.com $email = $_GET['email']; $email === 'myemail@example.com';
চেডারমোনকি

45

ব্যবহার করুন parse_url () এবং parse_str () পদ্ধতি। parse_url()ইউআরএল স্ট্রিং এর অংশগুলির একটি মিশুক অ্যারে পার্স করবে into যেহেতু আপনি কেবলমাত্র URL এর একক অংশ চান তাই আপনি যে অংশটি চান তার সাথে স্ট্রিংয়ের মান ফেরত দিতে আপনি একটি শর্টকাট ব্যবহার করতে পারেন। এরপরে, parse_str()কোয়েরি স্ট্রিংয়ের প্রতিটি পরামিতিগুলির জন্য ভেরিয়েবল তৈরি করবে। আমি বর্তমান প্রসঙ্গে কলুষিত করতে পছন্দ করি না, সুতরাং একটি দ্বিতীয় প্যারামিটার সরবরাহ করা সমস্ত ভেরিয়েবলগুলিকে একটি এসোসিয়েটিভ অ্যারেতে রাখে into

$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। এই ইউআরএল কেবল INকোড স্ট্রিং হয়।
ডেভচানা

7

আপনি পরে ইমেল ঠিকানা পেতে কোড ব্যবহার করতে পারেন? ইউআরএল মধ্যে

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


3
ওপি বর্তমান পৃষ্ঠায় ইউআরএল নয় স্ট্রিং থেকে ভেরিয়েবলগুলি বের করার অনুরোধ করেছে। 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

আমি @ রুয়েল উত্তর থেকে ফাংশন তৈরি করেছি । আপনি এটি ব্যবহার করতে পারেন:

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");

@ রুয়েলকে ধন্যবাদ


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

এটি আমার জন্য পিএইচপি ব্যবহার করে দুর্দান্ত কাজ করছে


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

সুতরাং প্রশ্নের ক্ষেত্রে আপনি ইউআরএল থেকে ইমেল মান পেতে প্যারামিটারগুলি পেতে এটি ব্যবহার করতে পারেন:

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

ভেরিয়েবল অন্যান্য ধরনের জন্য, আপনি করতে চান একটি ভিন্ন / উপযুক্ত ফিল্টার চয়ন করুন যেমন FILTER_SANITIZE_STRING

আমি মনে করি এই উত্তরটি প্রশ্নটি যা চেয়েছে তার চেয়ে বেশি কিছু করেছে - ইউআরএল প্যারামিটার থেকে কাঁচা ডেটা পাওয়া। তবে এটি একটি এক-লাইনের শর্টকাট যা একই ফলাফল:

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

পাশাপাশি চলকগুলি ধরে রাখার অভ্যাসে যেতে পারে।


হুফ, ইউআরএল থেকে এটি না পাওয়ার প্রশ্নগুলির শেষ লাইনটি দেখতে পেলেন না ... এটি কারওর পক্ষে সহায়ক হলে এটি এখানে রেখে দিচ্ছেন।
স্কয়ারকাণ্ডি

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 পার্স করে এবং কোয়েরি প্যারামিটারের মান 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

দৃষ্টি আকর্ষণ করার ব্যাখ্যা আঁকার জন্য @ m02ph3u5 ধন্যবাদ যোগ করা হয়েছে
ভড়গব কাকলতারা

-3

ইউআরএল স্ট্রিং থেকে প্যারামিটারগুলি পেতে, আমি নিম্নলিখিত ফাংশনটি ব্যবহার করেছি।

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');

যদি অনেকগুলি ইউআরএল স্ট্রিং থাকে তবে আপনি সেই সমস্ত ইউআরএল স্ট্রিং থেকে প্যারামিটার 'ইমেল' পেতে লুপটি ব্যবহার করতে পারেন এবং সেগুলি অ্যারেতে সঞ্চয় করতে পারেন।


1
আমি ব্রাউজারের অ্যাড্রেস বার থেকে এই স্ট্রিংগুলি পাচ্ছি না তবে আপনি এর জন্য সমাধান পোস্ট করেছেন
মোহাম্মদ

ওপ পিএইচপি সম্পর্কে জিজ্ঞাসা করছিল, জাভাস্ক্রিপ্ট নয়
জ্যাকব আলভারেজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.