PHP-তে রেগুলার এক্সপ্রেশনে সেটের ভিতরে হাইফেন
হাইফেন - []-এর ভিতরেও একটি বিশেষ চরিত্র
(কিন্তু বাইরে - নয়)। যদি আপনার দরকার হাইফেন নিজেই作为一个 চরিত্র হিসাবে - তবে এটিকে সেখানে রাখুন,
যেখানে এটি একটি গ্রুপ বিভাজক হিসাবে গৃহীত হবে না।
এটি কেন গুরুত্বপূর্ণ: আপনি নিজের অজান্তেই একটি চরিত্র গ্রুপ তৈরি করে ফেলতে পারেন। উদাহরণস্বরূপ,
এভাবে - [:-@] - আপনি ভাবছেন যে আপনি কোলন, হাইফেন এবং @ চিহ্ন নিচ্ছেন, কিন্তু
বাস্তবে এটি : এবং @-এর মধ্যবর্তী চরিত্রগুলির একটি গ্রুপ হয়ে দাঁড়ায়। এই গ্রুপে
নিম্নলিখিত চরিত্রগুলি অন্তর্ভুক্ত রয়েছে: :, ;, ?,
<, =, >।
এগুলি কোথা থেকে এসেছে? ASCII টেবিল থেকে - কোলনের নম্বর @ চিহ্নের চেয়ে কম - এবং ফলস্বরূপ একটি গ্রুপ তৈরি হয়। অর্থাৎ সমস্ত গ্রুপ ASCII টেবিল অনুসারে তৈরি হয় (ইচ্ছা করলে এটি ব্যবহার করা যেতে পারে)।
এটির সাথে কীভাবে মোকাবিলা করবেন: হাইফেন চরিত্রটি সেখানে রাখুন
যেখানে এটি নিশ্চিতভাবে একটি গ্রুপ চরিত্র হিসাবে গৃহীত হবে না,
উদাহরণস্বরূপ, শুরুতে বা শেষে
(অর্থাৎ [-এর পরে বা ]-এর আগে)।
আপনি হাইফেনকে এস্কেপও করতে পারেন - তখন
এটি তার অবস্থান নির্বিশেষে নিজেকে বোঝাবে।
উদাহরণস্বরূপ, [:-@]-এর পরিবর্তে লিখুন
[:\-@] - এবং তখন আর কোন গ্রুপ থাকবে না,
বরং তিনটি চরিত্র থাকবে - কোলন, হাইফেন এবং @ চিহ্ন।
উদাহরণ
নিম্নলিখিত উদাহরণে, অনুসন্ধান প্যাটার্নটি হল:
অঙ্ক 1, তারপর 'a'
থেকে 'z' পর্যন্ত অক্ষর, তারপর অঙ্ক 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a-z]2#', '!', $str);
?>
ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:
'! 1-2 ! !'
উদাহরণ
এখন আসুন হাইফেনকে এস্কেপ করি। ফলস্বরূপ
অনুসন্ধান প্যাটার্নটি হল: অঙ্ক 1, তারপর
অক্ষর 'a', বা হাইফেন, বা অক্ষর 'z',
তারপর অঙ্ক 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a\-z]2#', '!', $str);
?>
ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:
'! ! 1c2 !'
উদাহরণ
এটিকে এস্কেপ না করেই শুধু হাইফেনটির অবস্থান পরিবর্তন করা যেতে পারে:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[az-]2#', '!', $str);
?>
ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:
'! ! 1c2 !'
উদাহরণ
নিম্নলিখিত উদাহরণে, অনুসন্ধান প্যাটার্নটি হল:
প্রথম চরিত্রটি হল ছোট হাতের অক্ষর বা
হাইফেন '-', তারপর দুটি 'x' অক্ষর:
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-z-]xx#', '!', $str);
?>
ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:
'! Axx ! @xx'
উদাহরণ
নিম্নলিখিত উদাহরণে, অনুসন্ধান প্যাটার্নটি হল:
প্রথম চরিত্রটি হল ছোট হাতের, বড় হাতের
অক্ষর বা হাইফেন '-', তারপর দুটি 'x' অক্ষর:
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>
ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:
'! ! ! @xx'
উদাহরণ
হাইফেনটি দুটি গ্রুপের মধ্যে রাখা যেতে পারে - সেখানে এটি নিশ্চিতভাবে আরেকটি গ্রুপ তৈরি করবে না:
<?php
$str = 'axx 9xx -xx @xx';
$res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>
ফলস্বরূপ ভেরিয়েবলে নিম্নলিখিতটি লেখা হবে:
'! ! ! @xx'
ব্যবহারিক সমস্যা
একটি স্ট্রিং দেওয়া হয়েছে:
<?php
$str = 'xaz xBz xcz x-z x@z';
?>
নিম্নলিখিত প্যাটার্ন অনুসারে সমস্ত স্ট্রিং খুঁজুন:
অক্ষর 'x', বড় বা ছোট হাতের অক্ষর
বা হাইফেন, অক্ষর 'z'।
একটি স্ট্রিং দেওয়া হয়েছে:
<?php
$str = 'xaz x$z x-z xcz x+z x%z x*z';
?>
নিম্নলিখিত প্যাটার্ন অনুসারে সমস্ত স্ট্রিং খুঁজুন:
অক্ষর 'x', তারপর বা ডলার চিহ্ন, বা
হাইফেন বা প্লাস চিহ্ন, তারপর অক্ষর 'z'।