آخرین نوشته ها

image post

آموزش Regular Expressions عبارات با قاعده

Regular Expressions یا به فارسی عبارات با قاعده کاربرد های بسیاری در برنامه نویسی های ClientSide یا ServerSide داراست از Regular Expressions برای یافتن , جایگزین کردن یا حذف کردن قسمتی از یک String طبق الگویی که توسط برنامه نویسی مشخص شده است استفاده میشود.

در زبان php توابع زیر را برای کار با عبارات یا قاعده در نظر گرفته اند :

  • preg_match
  • preg_match_all
  • preg_replace
  • preg_split
  • preg_quote

با ما همراه باشید تا تک تک این توابع را توضیح دهیم !

برای استفاده از عبارات با قاعده ابتدا باید ابتدا Syntax نوشتن الگو ها را فرابگیرید

کاراکتر ^ آغاز متن مورد نظر رو واکشی میکند

متن مثال : iranian language is persian forever

الگوی :

^p

قسمت هایی از متن که با p شروع میشود را واکشی میکن پس نتیجه بصورت زیر می باشد :

persian forever

کاراکتر + بررسی وجود حداقل یک مورد در رشته

مثال : last iran & middle east news

الگوی :

m+

خروجی الگو برابر با middle می باشد

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

مثال : php is best in web programming

الگوی :

web.

تمامی متن بعد از web را واکشی میکند !

خروجی الگوی بالا میشود :

web programming

کاراکتر $ پایان یافتن رشته با متن رو بررسی می نماید

مثال : i love php

الگوی :

p$

خروجی الگو p می باشد !

کاراکتر * بررسی میکند هیچ مورد یا بیشتر از الگو در متن باشد

متن : i love php

الگوی :

p*

خروجی p می باشد

کاراکتر های [] برای جستجو بر اساس رنج

مثال : php programmers are the best

الگوی :

[a-z]

بررسی میکند اگر در متن کاراکتر های بین a تا z بود متن را بر گردان !

مثال : 0912345678

الگوی :

[0-9]

بررسی می نماید متن کاراکتر های بین 0 تا 9 داشته باشد

کاراکتر های {} برای محدودیت در تعد کارکاتر های جستجو شده بر اساس رنج

مثال : i love php programming

الگوی :

p{1}

این الگو بررسی میکند حداقل یک p در رشته باشید

p{1,2}

الگوی بالا بررسی میکند حداقل یک p و حداکثر دو p در رشته موجود باشد

کاراکتر نشان دهنده آغاز و اتمام الگو

این کاراکتر ها نباید بین a-z و 0-9 باشند و باید شامل چنین کاراکتر هایی باشند :

@
#
~
|

برای نوشتن کاراکتر  آغاز و پایان ابتدا کاراکتر را انتخاب می نماییم و در ابتدا و انتهای الگو قرار میدهیم :

/pattern/

در عبارت بالا pattern نشانه از الگوی ما می باشد !

عبارات اغازی و پایانی الو الزاری هستند و اگر در خود الگو از عبارت یاد شده استفاده کردید حتما با back slash آنرا خنثی نمایید !

حالا میخواهیم با meta character ها آشنا شپیم !

حروف meta character ها باید بصورت کوچک نوشته شوند در غیر این صورت بالعکس کار تعریف شده راانجام میدهد !

w مخفف word

s مخفف space

d مخفف decimal

d\  برای واکشی اعداد از رشته می باشد

w\ برای واکشی حروف می باشند

s\ برای واکشی فضای خالی می باشد

کاراکتر های اختیاری modifiers

نحوه استفاده : سپس بعد dot

/pattern/character

اگر بعد از الگو کاراکتر i را قرار دهید حساسیت به حروف کوچک و بزرگ ایجاد میشود

اگر کاراکتر s و m بعد الگو باشد و الگو چندین خط باشد در بین تمام خطوط جستجو می نماید !

حالا که نحوه نوشتن عبارات را فرا گرفتیم به سراغ استفاده کاربردی انها برویم !

تابع preg_split :

preg_split($pattern,$text);

این تابع بر اساس الگو میاد متن رو explode میکنه به یک آرایه !

مثال : الگویی بنویسید که رشته را بر اساس فاصله جدا کند و آرایه بر گرداند

$text = "love php forever";
$pattern = "\s+";
$words = preg_split($pattern,$text);
var_dump($words);

محتوای متغیر words به اینصورت می باشد :

Array(
[0] => "love",
[1] => "php",
[2] => "forever",
);

تابع preg_match :

preg_match($pattern , $text , $matches);

پارامتر اول تابع الگوی شما می باشد

پارامتر دوم رشته مورد نظر می باشد

مثال : الگویی تعریف میکنیم تا رشته را بررسی کند و در صورتی که آدرس ایمیل بود آنرا تایید نماید!

$pattern = "/[a-z]+\@[a-z]+\.[a-z]+{2,4}/";
$text = "[email protected]";
$matches = null;
$result = preg_match($pattern,$text,$matches);

خب الگوی بالا بررسی میکند رشته قبل از @ شامل حروف باشد و بعد از @ هم همچنین سپس بعد dot بررسی میکند حروف a تا z حداقل دو حرف و حداکثر ۴ حرف موجود باشد !

متغیر result اگر ایمیل در رشته موجود باشد 1 و اگرنباشد 0 بر میگرداند !

متغیر matches اگر الگو در متن باشد آنرا بصورت آرایه بر میگرداند

تابع preg_replace :

preg_replace($pattern,$replace,$text);

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

$text = "28-03-1360";
$pattern = "(\d+){4}\-(\d+){2}\-(\d+){2}";
$replace = "$0/$1/$3";
$new_text = preg_replace($pattern,$replace,$text);
echo $new_text;

نتیجه کد بالا :

result => 28/03/1360

می باشد !

 

0 دیدگاه

ارسال دیدگاه جدید

دنیس ریچی : یونیکس بسیار ساده هست، تنها یک نابغه باید باشید تا بتوانید سادگی آن را درک کنید.