এমন কি কোনও পিএইচপি ফাংশন রয়েছে যা প্রয়োগ করার আগেই রেজেক্স প্যাটার্নগুলি এড়াতে পারে?
আমি সি # Regex.Escape()
ফাংশনের লাইনে কিছু খুঁজছি for
এমন কি কোনও পিএইচপি ফাংশন রয়েছে যা প্রয়োগ করার আগেই রেজেক্স প্যাটার্নগুলি এড়াতে পারে?
আমি সি # Regex.Escape()
ফাংশনের লাইনে কিছু খুঁজছি for
উত্তর:
preg_quote()
আপনি যা খুঁজছেন তা হ'ল:
বিবরণ
string preg_quote ( string $str [, string $delimiter = NULL ] )
preg_quote ()
str
নিয়মিত এক্সপ্রেশন সিনট্যাক্সের অংশ এমন প্রতিটি চরিত্রের সামনে একটি ব্যাকস্ল্যাশ নেয় এবং রাখে। আপনার যদি রান-টাইম স্ট্রিং থাকে যা আপনার কিছু পাঠ্যে মিলতে হবে এবং স্ট্রিংয়ে বিশেষ রেজেেক্স অক্ষর থাকতে পারে Thisবিশেষ নিয়মিত প্রকাশের অক্ষরগুলি হ'ল:
. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
পরামিতি
Str
ইনপুট স্ট্রিং।
বিভেদক
Alচ্ছিক ডিলিমিটার নির্দিষ্ট করা থাকলে এটি পালাতেও পারে। এটি পিসিআরই ফাংশনগুলির দ্বারা প্রয়োজনীয় ডিলিমিটারের পালানোর জন্য দরকারী। / সবচেয়ে সর্বাধিক ব্যবহৃত ডিলিমিটার।
গুরুত্বপূর্ণভাবে, দ্রষ্টব্য যে যদি $delimiter
আর্গুমেন্টটি নির্দিষ্ট না করা থাকে তবে ডিলিমিটার - আপনার রেজেক্সকে ঘিরে রাখার জন্য ব্যবহৃত চরিত্রটি সাধারণত একটি ফরোয়ার্ড স্ল্যাশ ( /
) - রক্ষা পাবেন না। আপনি সাধারণত আপনার রেজেক্সের সাথে যে কোনও ডিলিমিটার ব্যবহার করছেন তা $delimiter
আর্গুমেন্ট হিসাবে পাস করতে চাইবেন ।
preg_match
হোয়াইট স্পেস দ্বারা বেষ্টিত প্রদত্ত URL টির উপস্থিতিগুলি সন্ধান করতে ব্যবহার করা:$url = 'http://stackoverflow.com/questions?sort=newest';
// preg_quote escapes the dot, question mark and equals sign in the URL (by
// default) as well as all the forward slashes (because we pass '/' as the
// $delimiter argument).
$escapedUrl = preg_quote($url, '/');
// We enclose our regex in '/' characters here - the same delimiter we passed
// to preg_quote
$regex = '/\s' . $escapedUrl . '\s/';
// $regex is now: /\shttp\:\/\/stackoverflow\.com\/questions\?sort\=newest\s/
$haystack = "Bla bla http://stackoverflow.com/questions?sort=newest bla bla";
preg_match($regex, $haystack, $matches);
var_dump($matches);
// array(1) {
// [0]=>
// string(48) " http://stackoverflow.com/questions?sort=newest "
// }
$delimiter
আর্গুমেন্টের গুরুত্ব, ডক্স থেকে সেই যুক্তির বিবরণ, এর অর্থ ঠিক কী সম্পর্কে বিভ্রান্ত হয়েছে তার একটি ব্যাখ্যা এবং একটি ভারী সম্পর্কে preg_quote
সবচেয়ে সহজ ক্ষেত্রে ব্যবহার করা হচ্ছে এমন চিত্রিত উদাহরণটি আমি উপস্থিত করতে পেরেছিলাম যেখানে এটি প্রকৃতপক্ষে রিজেক্স গঠনের জন্য ব্যবহার করা হচ্ছে এবং এটি অন্য কোনও preg_*
কার্যক্রমে স্থাপন করা হয়েছে (কারণ অন্যথায়, বিষয়টি কী?) আপনি যদি পরিবর্তনটি পছন্দ না করেন তবে নির্দ্বিধায় রোলব্যাক করুন।
টি-রেজেক্স লাইব্রেরি থেকে প্রস্তুত প্যাটার্নগুলি ব্যবহার করা আরও নিরাপদ হবে :
$url = 'http://stackoverflow.com/questions?sort=newest';
$pattern = Pattern::prepare(['\s', [$url], '\s']);
// ↑ $url is quoted
তারপরে সাধারণ টি-রেজেক্স ম্যাচটি সম্পাদন করুন :
$haystack = "Bla bla http://stackoverflow.com/questions?sort=newest bla bla";
$matches = $pattern->match($haystack)->all();
$delimiter
আর্গুমেন্ট প্রাপ্ত করতেpreg_quote()
কোনো বিভেদক এড়াতে পারবে না , এমনকি "ডিফল্ট" (অথবা সবচেয়ে সাধারণ)/
।