آموزش Regular Expression در php (عبارات باقائده) - اختصاصی پی سی وب :



Regular Expression در پی اچ پی چیست :

ما یک مبحثی رو در پی اچ پی داریم به نام عبارات با قائده یا Regular Expression که بهش به صورت اختصاری RegEx هم می گویند

این ابزار برای دستکاری رشته ها کاربرد داره. مثلا میخواین در رشته ای یک رشته دیگه رو پیدا کنید یا با یک رشته دیگه جایگزینش کنید و …

این ابزار در سال ۱۹۵۰ توسط Stephen Kleene ریاضیدان آمریکایی معرفی شد. بعد از اون در سیستم های مختلف به کار گرفته شد.


در نگاه اول به regex شاید به نظرتون ترسناک بیاد و تا به حال هیچ وقت باهاش کار نکرده باشد. اما وقتی که از این ابزار در برنامه نویسی استفاده میکنید میبینید که خیلی جاها به کمک تون میاد و با تمرین زیاد میتونید به regex مسلط شید.

شروع کار با RegEx :

برای شروع کار بهتر است به معرفی برخی از توابع مهم بپردازم :

کد PHP:
PCRE Functions 
- - 
preg_​filter
- - preg_​grep
- - preg_​last_​error
- - preg_​match_​all
- - preg_​match
- - preg_​quote
- - preg_​replace_​callback_​array
- - preg_​replace_​callback
- - preg_​replace
- - preg_​split 
تمام این توابع از قوانین regex استفاده میکنن.

من بعدا برای هر کدوم از این ها مقالاتی رو میسازم و لینکشون میکنم در این جا ولی صرفا به جهت این که اطلاعاتی رو داشته باشید :

تابع preg_​filter : یه جورایی کارش مثل preg_​replace هست .

تابع preg_​grep : برای جستجو در ارایه ها است ، تمام عنصرهای input_array را بررسی می کند، که تمام اِلِمان های ای که با pattern مطابقت دارند را به عنوان نتیجه بازمی گرداند.

تابع preg_​last_​error : کدخطای اخرین عبارت با قاعده استفاده شده را بر می گرداند .

تابع preg_match_all : درون یک رشته تمامی تمامی عبارت هایی که با pattern مچ باشند رو برمیگرداند

تابع preg_​match : در رشته به دنبال الگو {pattern} می گردد، که در صورت پیدا کردن الگو نتیجه ی true ودر غیر این صورت false به دست می دهد.

تفاوت تابع : preg_match_all و تابع preg_match :

تابع اولی تمامی رشته رو بررسی میکند و هر عبارتی که با الگو تطابق داشته باشد را برمیگرداند ، اما تابع preg_​match درون یک رشته را بررسی میکند و در صورتی که به اولین عبارتی که الگو درون اون وجود دارد برسد مقدار درست را بر می گرداند در غیر این صورت مقدار نادرست را بر می گرداند .

تابع preg_​quote :

این تابع ، هم تابع جالبی ولی خوب متاسفانه هیچ جایی در موردش اموزشی وجود نداره و اصلا اگر از خیلی ها بپرسید دقیق نمیدونند که preg_​quote چی هست یا اصلا چه کاربردی داره ؟

اما خوب من بهتون یک سری توضیحات میدهم که خیلی جالبه :

ببینید تابع preg_​quote : یک رشته رو میگیره ، اگر داخلش کاراکتر هایی مثل (. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -) باشه به قبل از انها یک بک اسلش (\) اضافه میکنه ، و در واقع با این کار رشته رو می بره ، من بعدا بهتون میگم که کار \ بک اسلش چیه ، به صورت ساده فقط بدونید که باعث بریده شدن رشته میشه .

این کار زمانی میتونه مفید باشه که شما نیاز دارید رشته مطابق با متنی باشه که وارد کردید که مثلا ممکن رشته شما داخلش کاراکتر های ویژه (. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -) باشه . برای جلوگیری از اجرای این کاراکتر ها این کارو انجام میدهید .

این تابع یک delimiter هم داره که باعث میشه شما کاراکتر های خاص دیگری رو هم این بلا رو سرشون بیارید ، مثلا / اسلش قبلش بک اسلش اضافه نمیشه برای این که قبلش بک اسلش اضافه بشه ، شما میتوانید همین اسلش رو به عنوان delimiter وارد کنید .

تابع preg_​replace_​callback_​array :

این تابع کارش انجام یک جستجو با استفاده از عبارات باقائده و جایگزینی با استفاده از کال بک ها هست

تابع preg_replace_callback :

تابع بعدی که قصد معرفی اون رو دارم تابع preg_replace_callback : بایک عبارت منظم جستجو را انجام دهید و با استفاده از کال بک جایگزین کنید .

یکسری تفاوت ها بین تابع های فوق وجود داره که در اینده بهشون اشاره خواهم کرد .

تابع preg_​replace :

این تابع درون رشته ای که مشخص میکنید عبارت باقاعده را در صورت پیدا کردن جایگزین میکند

تابع preg_​split :

آخرین تابعی که قصد داریم بهش اشاره کنیم تابع preg_​split هست کارش این هست که بهش یک الگو پاس میدید ، بعد توی رشته شما دنبال این الگو می گرده و بعد از پیدا کردن ، مقادیر رو در قالب یک آرایه باز میگرداند . براساس تعریف سازنده : رشته را به رشته باقاعده تقسیم می کنید .

امیدوارم این تاپیک مفید بوده باشد ، در ادامه در خصوص سایر مسائل صحبت خواهیم کرد .