آموزش PHP

آموزش پیشرفته PHP - عبارات منظم

عبارات منظم چیزی بیش از دنباله یا الگوی کاراکترها نیست. آنها پایه ای برای قابلیت تطبیق الگوی را فراهم می کنند. با استفاده از عبارت منظم یا Regular expressions می توانید یک رشته خاص را در داخل یک رشته دیگر جستجو کنید، می توانید یک رشته را با یک رشته دیگر جایگزین کنید و یک رشته را به تکه های زیادی تقسیم نمایید. 

PHP توابع خاصی را به دو مجموعه از توابع regular expression ارائه می دهد، هر کدام به نوع خاصی از عبارات منظم مربوط می شوند.

شما می توانید هر یک از آنها را بر اساس راحتی خود استفاده کنید. 

  •  POSIX Regular Expressions      
  • PERL Style Regular Expressions

 POSIX Regular Expressions

ساختار یک عبارت منظم POSIX متفاوت از یک عبارات معمول محاسباتی نیست: عناصر مختلف (عملگرها) برای ترکیب عبارات پیچیده تر ترکیب می شوند. ساده ترین عبارتی منظم است که منطبق با یک کاراکتر، مانند g، در داخل رشته ها مانند g، haggle یا bag است. 

بیایید برخی از مفاهیم که در عبارات منظم POSIX استفاده می شود را شرح دهیم. پس از آن به شما توابع مرتبط با regular expression را معرفی می کنیم. 

براکت

براکت ها ([]) هنگامی که در متن عبارات منظم استفاده می شوند معنای خاصی دارند. آنها برای یافتن طیف وسیعی از کاراکترها استفاده می شوند.

Expression شرح
[0-9] با هر رقمی دسیمال از 0 تا 9 مطابقت دارد.
[a-z] این هر کاراکتری با حروف کوچک را از a به حرف کوچک z منطبق می کند.
[A-Z] این هر کاراکتری با حروف بزرگ را از A به حرف بزرگ Z منطبق می کند.
[a-Z] این هر کاراکتری با حروف کوچک را از a به حرف بزرگ Z منطبق می کند.

 محدوده نشان داده شده در بالا عمومی هستند؛ شما همچنین می توانید محدوده [0-3] را برای مطابقت با هر رقم دسیمالی از 0 تا 3 یا محدوده [b-v] برای مطابقت با هر حرف کوچک از b تا حرف کوچک v استفاده کنید. 

کوانتومی ها

فرکانس یا موقعیت توالی کاراکترها و کاراکترهای تک را می توان با یک کاراکتر خاص مشخص کرد. هر یک از کاراکترهای خاص دارای یک ویژگی خاص هستند. +، *،؟، {int. range} و پرچم های $ همه توالی کاراکتر را دنبال می کنند.

Expression شرح
p+ این رشته حاوی حداقل یک p را مطابقت می دهد.
p* این هر رشته حاوی صفر یا pهای بیشتر را مطابقت می دهد.
p? این هر رشته حاوی صفر یا یک p را مطابقت می دهد.
p{N} این رشته توالی حاوی  N p را مطابقت می دهد.
p{2,3} این رشته توالی حاوی 2 یا 3  p را مطابقت می دهد.
p{2, } این رشته توالی حاوی حداکثر 2   p را مطابقت می دهد.
p$ این هر رشته حاوی p در انتهایش را مطابقت می دهد.
^p این هر رشته حاوی p در اپتدایش را مطابقت می دهد.

 مثال ها

مثال های زیر مفاهیم در مورد کاراکترهای مطابق داده شده را روشن می کند.

Expression شرح
[^a-zA-Z]

هر رشته ای که حاوی هیچ یک از کاراکترهای بین z و A از طریق Z نیست، مطابقت می دهد.

p.p

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

 
^.{2}$

هر رشته ای که حاوی دقیقا دو کاراکتر است، را مطابقت می دهد.

(.*)

هر رشته محصور در داخل و </ b> مطابقت داده می شود.

p(hp)*

این هر رشته ای حاوی p را مطابقت می دهد که صفر یا چند نمونه از توالی  php است.

 

 محدوده های از پیش تعریف شده کاراکتر

برای سهولت برنامه نویسی، چندین رشته از پیش تعیین شده، که همچنین به عنوان کلاس های کاراکتر نیز شناخته می شوند، در دسترس هستند. کلاس های کاراکتر کل مجموعه ای از کاراکترها به عنوان مثال، الفبای یا یک مجموعه عدد صحیح را مشخص می کنند:

Expression شرح
[[:alpha:]]

هر رشته شامل کاراکترهای Aa تا zZ را مطابقت می دهد.

[[:digit:]] هر رشته شامل اعداد بین 0 تا 9 را مطابقت می دهد.
[[:alnum:]]

هر رشته شامل کاراکترهای Aa تا zZ و 0 تا 9 را مطابقت می دهد.

[[:space:]]

هر رشته شامل space (فاصله) را مطابقت می دهد.

 توابع POSIX  Regexp  در PHP

PHP در حال حاضر هفت تابع برای جستجو رشته ها با استفاده از عبارات منظم به سبک POSIX ارائه می دهد:

تابع شرح
 ()ereg

تابع ()ereg یک رشته مشخص شده توسط رشته را برای یک رشته مشخص شده توسط الگوریتم جستجو می کند، اگر علامت پیدا شود، true و در غیر این صورت false را باز می گرداند.

 ()ereg_replace

تابع ()ereg_replace برای رشته مشخص شده توسط الگوریتم جستجو می کند و در صورت یافتن الگو را با جایگزین می کند.

 ()eregi

تابع ()eregi در طول یک رشته مشخص شده توسط الگو برای یک رشته مشخص شده توسط رشته جستجو می کند. جستجو حساس به حروف کوچک و بزرگ نیست.

 
 ()eregi_replace

تابع ()eregi_replace دقیقا مثل ()ereg_replace عمل می کند، به جز اینکه جستجو برای الگوی در رشته حساس به حروف بزرگ نیست.

 
 ()split تابع ()split یک رشته را به عناصر مختلف تقسیم می کند، مرزهای هر عنصر بر اساس وقوع الگوی در رشته است.
 ()spliti

تابع ()spliti دقیقا به همان شیوه تقسیم ()split عمل می کند، به جز اینکه به حروف کوچک و بزرگ حساس نیست.

 ()sql_regcase

تابع ()sql_regcase می تواند به عنوان یک تابع مفید در نظر گرفته شود، هر کاراکتر را در رشته پارامتر ورودی تبدیل به یک عبارت bracketed حاوی دو کاراکتر می کند.

 

PERL Style Regular Expressions

عبارات منظم به سبک perl شبیه همتایان POSIX خود هستند. دستورنگارش POSIX را می توان تقریبا به طور تعویض با توابع عبارات منظم سبک perl استفاده کرد. در واقع، شما می توانید از هر یک از کمیته های معرفی شده در بخش POSIX استفاده کنید. بیایید چند مفهوم که در عبارات منظم PERL استفاده می شود را بیان کنیم. پس از آن به توابع مرتبط با  regular expression می پردازیم.

 کاراکترهای Meta

کاراکتر Meta ، به سادگی کاراکتر حروف الفبایی است که پیش از بک اسلش استفاده می شود که ترکیب از معنای خاصی را می دهد. به عنوان مثال، شما می توانید مبالغ بزرگ پول را با استفاده از کاراکتر Meta 'd': /([d]+)000/ جستجو کنید. d برای هر رشته از کاراکتر عددی جستجو می کند. 

در زیر لیستی از کاراکترهای Meta است که می توانند در PERL Style Regular Expressions استفاده شوند.

کاراکتر شرح
.

یک کاراکتر تک

s

یک کاراکتر فضای خالی (فضای، تب، خط جدید)

S

کاراکتر بدون فضای خالی

d

یک رقمی (0-9)

D

غیر رقمی

w

یک کاراکتر کلمه ای (a-z، A-Z، 0-9، _).

W

کاراکتر غیر کلمه ای

[aeiou]

یک کاراکتر تک در مجموعه داده می شود.

[aeiou^]

یک حرف را در خارج از مجموعه داده شده مطابقت می دهد.

(foo|bar|baz)

مطابق با هر یک از گزینه های مشخص شده است.

 modifierها

چند اصلاح کننده یا modifier در دسترس است که می تواند کار شما را با regexps بسیار ساده تر کند، مانند حساسیت به حروف کوچک و بزرگ، جستجو در چند خط و غیره

modifier شرح
i

مطابقت را حساس به حروف کوچک و بزرگ می کند.

m

مشخص می کند که رشته شامل newline (خط جدید) یا carriage است

کاراکترهای بازگشتی، عملگرهای ^ و $ اکنون

مطابق با مرز خط جدید، به جای یک  مرز رشته ای هستند.

o

این عبارت را تنها یکبار ارزیابی می کند

s

اجازه استفاده از . برای مطابقت با یک کاراکتر newline را می دهد.

x

به شما امکان استفاده از white space در expression برای وضوح را می دهد.

g

تمام مطابقت ها در سراسر جهان را پیدا می کند

cg

به جستجو حتی پس از شکست در مطابقت جهانی اجازه ادامه پیدا کردن را می دهد.

 توابع سازگار Regexp PERL در PHP

PHP توابع زیر را برای جستجوی رشته ها با استفاده از عبارات منظم سازگار با Perl ارائه می دهد:

تابع شرح
 ()preg_match

تابع ()preg_match رشته ای را برای الگوریتم جستجو می کند، اگر عنصر وجود داشته باشد، true و در غیر این صورت false را باز می گرداند.

 ()preg_match_all

تابع preg_match_all ()همه رخدادهای الگوی در رشته مطابقت می دهد.

 ()preg_replace

تابع ()preg_replace به درستی مانند ereg_replace () عمل می کند، به جز اینکه عبارات منظم را می توان در پارامتر ورودی و پارامتر جایگزینی استفاده کرد.

 ()preg_split

تابع ()preg_replace به درستی مانند ()ereg_replace عمل می کند، به جز اینکه عبارات منظم را می توان در پارامتر ورودی و پارامتر جایگزینی استفاده کرد.

 ()preg_grep

تابع ()preg_split دقیقا مشابه ()split عمل می کند، به جز اینکه عبارات منظم به عنوان پارامترهای ورودی برای الگو پذیرفته می شوند.

 ()preg_ quote

کاراکترهای عبارت منظم نقل قول

 

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش PHP

Learn PHP

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

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

لطفا چند لحظه منتظر بمانید ...