⊗ppPmRgESCh 226 of 447 menu

PHP-তে রেগুলার এক্সপ্রেশনে বিশেষ অক্ষর এস্কেপ করা

ধরুন আমরা চাই যে বিশেষ অক্ষরটি নিজেকেই বোঝায়। এর জন্য এটিকে ব্যাকস্ল্যাশ ব্যবহার করে এস্কেপ করতে হবে। আসুন উদাহরণের মাধ্যমে দেখি।

উদাহরণ

নিম্নলিখিত উদাহরণে, রেগুলার এক্সপ্রেশনের লেখক চেয়েছিলেন, যে সার্চ প্যাটার্নটি এইরকম দেখাবে: অক্ষর 'a', তারপর প্লাস '+', তারপর অক্ষর 'x'। যাইহোক, কোডের লেখক '+' চিহ্নটি এস্কেপ করেননি এবং তাই সার্চ প্যাটার্নটি বাস্তবে এইরকম: অক্ষর 'a' এক বা একাধিক বার, তারপর অক্ষর 'x':

<?php $str = 'a+x ax aax aaax'; $res = preg_replace('#a+x#', '!', $str); ?>

ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:

'a+x ! ! !'

উদাহরণ

এবং এখন লেখক প্লাসকে ব্যাকস্ল্যাশ দিয়ে এস্কেপ করেছেন। এখন সার্চ প্যাটার্নটি ঠিক যেমনটি হওয়া উচিত তেমন দেখাচ্ছে: অক্ষর 'a', তারপর প্লাস '+', তারপর অক্ষর 'x'

<?php $str = 'a+x ax aax aaax'; $res = preg_replace('#a\+x#', '!', $str); ?>

ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:

'! ax aax aaax'

উদাহরণ

এই উদাহরণে, প্যাটার্নটি এইরকম: অক্ষর 'a', তারপর ডট '.', তারপর অক্ষর 'x':

<?php $str = 'a.x abx azx'; $res = preg_replace('#a\.x#', '!', $str); ?>

ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:

'! abx azx'

উদাহরণ

এবং নিম্নলিখিত উদাহরণে, লেখক স্ল্যাশ এস্কেপ করতে ভুলে গেছেন এবং রেগুলার এক্সপ্রেশনটি সমস্ত সাবস্ট্রিং-এর সাথে মিলে গেছে, কারণ এস্কেপ না করা ডট যেকোনো অক্ষরকে বোঝায়:

<?php $str = 'a.x abx azx'; $res = preg_replace('#a.x#', '!', $str); ?>

ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:

'! ! !'

উদাহরণ

খেয়াল করুন যে যদি আপনি ডটের জন্য ব্যাকস্ল্যাশ ভুলে যান (যখন এটির নিজেকে বোঝানো উচিত) - এটি আপনি লক্ষ্যও নাও করতে পারেন:

<?php preg_replace('#a.x#', '!', 'a.x'); // '!' রিটার্ন করবে, যেমন আমরা চেয়েছিলাম ?>

দৃশ্যত সঠিকভাবে কাজ করে (যেহেতু ডট যেকোনো অক্ষরকে বোঝায়, এমনকি একটি সাধারণ ডট '.'-ও)। কিন্তু যদি সেই স্ট্রিংটি পরিবর্তন করা হয়, যেখানে প্রতিস্থাপন ঘটে - আমরা আমাদের ভুলটি দেখতে পাব:

<?php preg_replace('#a.x#', '!', 'a.x abx azx'); // '! ! !' রিটার্ন করবে, কিন্তু আশা করা হয়েছিল '! abx azx' ?>
uziddahyms