داغ ترین ویدیو بابلز لرن : هک کلاس های مجازی توسط متین برونسی

ویژگی تصویر

عبارات با قاعده در PHP

  /  PHP   /  Regex در PHP
بنر تبلیغاتی الف
آموزش PHP

در این بخش به بررسی عبارات با قاعده در PHP می پردازیم.

عبارات با قاعده (regular expression) دنباله ای از کاراکتر ها هستند که نوعی الگوی جستجو را تشکیل می دهند. شما می توانید با استفاده از این الگوی جستجو برای توصیف آنچه که دنبال آن هستید استفاده کنید.

یک عبارت با قاعده در PHP می تواند تنها یک کاراکتر واحد یا یک الگوی پیچیده تر باشد.

از regular expression در PHP می توانید برای انجام انواع جستجوی متن و یا عملیات جایگزینی متن استفاده کنید.

توجه: اگر درک مطالب برای شما اندکی دشوار هست، نگران نباشی ! در ادامه کلی نمونه مثال ارائه دادیم که برای درک بهتر مطالب باید آن مثال ها را اجرا و آزمون و خطا کنید.

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

فهرست مطالب:

نحوه استفاده

عبارات با قاعده در PHP رشته هایی هستند که از جدا کننده ها، یک الگو و اصلاح کننده های اختیاری تشکیل شده اند:

$exp = "/bubbleslearn/i";

در مثال بالا / یک جدا کننده است و bubbleslearn الگویی هست که جستجو می شود و i یک اصلاح کننده هست جستجو را به حروف بزرگ و کوچک حساس می کند.

جدا کننده می تواند هر کاراکتری بجز حرف ، عدد ، بک اسلش \ یا فضای خالی باشد.

متداول ترین جدا کننده ، اسلش رو به جلو / است، اما زمانی که الگوی شما حاوی اسلش های رو به جلو باشد ، بهتر است از جدا کننده های دیگری مانند # یا ~ استفاده کنید.

توابع عبارات با قاعده در PHP

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

توابع preg_match() و preg_match_all() و preg_replace() برخی از متداول ترین آنها هستند.

تابعتوضیحات
preg_match()اگر الگو در رشته پیدا بشود عدد 1 در غیر این صورت عدد 0 را بر می گرداند.
preg_match_all()تعداد دفعاتی که الگو در رشته پیدا شده است را بر می گرداند که ممکن است 0 هم باشد.
preg_replace()با توجه به الگوی مشخص شده رشته همسان را با یک رشته دیگر جایگزین می کند.

تابع preg_match در PHP

تابع preg_match در PHP مشخص می کند که آیا رشته مطابق با الگو های مشخص شده است یا خیر.

مثال

در این مثال با استفاده از عبارات با قاعده یک الگو مشخص کرده ایم که “bubbleslearn” را بدون در نظر گرفتن حروف بزرگ و کوچک جستجو می کند:

تماشا در حالت تمام صفحه

خروجی

1

تابع preg_match_all در PHP

تابع preg_match_all در PHP مشخص می کند که چه تعداد الگوی مطابق را در یک رشته پیدا کرده است.

مثال

در مثال زیر تعداد دفعات استفاده از “ain” را در یک رشته ، بدون حساسیت به حروف کوچک و بزرگ جستجو می کنیم:

تماشا در حالت تمام صفحه

خروجی

4

تابع preg_replace در PHP

تابع preg_replace در PHP تمام الگو های مطابق در یک رشته را با یک رشته دیگر جایگزین می کند.

تماشا در حالت تمام صفحه

خروجی

Visit bubbleslearn!

اصلاح کننده های عبارات با قاعده در PHP

نحوه انجام جستجو مطابق با یک الگوی خاص توسط اصلاح کننده ها صورت می گیرد.

اصلاح کنندهتوضیحات
iجستجوی غیر حساس به حروف کوچک و بزرگ را انجام می دهد.
mجستجوی چند خطی را انجام می دهد.
uتطبیق صحیح الگوهای کدگذاری شده UTF-8 را فعال می کند.

الگو های عبارات با قاعده در PHP

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

اصطلاحتوضیحات
[abc]یک کاراکتر را از بین کاراکتر های موجود در براکت ها جستجو می کند.
[^abc]هر کاراکتری که بین کاراکتر های موجود در براکت ها نباشند را پیدا می کند.
[0-9]یک کاراکتر را در محدوده 0 تا 9 پیدا می کند.

متا کاراکتر ها در PHP

متا کاراکتر ها ، کاراکتر هایی با معنا و مفهوم خاصی هستند:

 

متا کاراکترتوضیحات
|هر مطابقتی بین الگو های جدا شده با | را پیدا می کند مانند: dog|cat|fish
.یک نمونه از هر کاراکتری را پیدا می کند.
^اولین رشته مطابق را از ابتدای یک رشته پیدا می کند مانند: ^Hello
$یک رشته همسان را از آخر یک رشته دیگر پیدا می کند مانند: $World
\dیک رقم را پیدا می کند.
\sیک کاراکتر فضای خالی را پیدا می کند.
\bیک کلمه همسان را در ابتدای رشته ای پیدا می کند مانند: \bWORD یا یک کلمه همسانی را در آخر رشته ای پیدا می کند مانند: WORD\b
\uxxxxکاراکتر یونیکد مشخص شده با عدد هگزادسیمال xxxx را پیدا می کند.

کمیت سنج (Quantifiers)

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

کمیت سنجتوضیحات
n+با هر رشته ای که حداقل یک n داشته باشد مطابقت دارد.
n*با هر رشته ای که حاوی صفر یا بیشتر از n است مطابقت دارد.
n?با هر رشته ای که حاوی صفر یا یک مورد n باشد مطابقت دارد.
n{x}با هر رشته ای که حاوی دنباله ای از X n’s است مطابقت دارد.
a{2}مثال برای کمیت سنج n{x} می باشد: متناظر می شود با aa
n{x,y}هر رشته ای را که حاوی دنباله ای از X تا Y n’s باشد مطابقت می دهد.
a{1,3}مثال برای کمیت سنج n{x,y} می باشد: متناظر می شود با a , aa , aaa
n{x,}با هر رشته ای که دارای دنباله ای از حداقل X n’s باشد مطابقت دارد.

مثال های بیشتر

  • [^a-zA-Z] با هر رشته ای مطابقت دارد که شامل هیچ یک از کاراکتر هایی اعم از a تا z و A تا Z نباشد.
  • p.p هر رشته حاوی p، به دنبال آن هر کاراکتری و به نوبه خود با یک p دیگر مطابقت دارد.
  • ^.{2}$ با هر رشته ای که دقیقاً دو کاراکتر داشته باشد مطابقت دارد.
  • <b>(.*)</b> با هر رشته ای که در <b> و </b> قرار دارد مطابقت دارد.
  • p(hp)* این رشته با هر رشته ای که حاوی یک p و به دنبال آن صفر یا چند نمونه از دنباله php باشد مطابقت دارد.

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

  • [[:alpha:]] با هر رشته حاوی کاراکتر های الفبایی aA تا zZ مطابقت دارد.
  • [[:digit:]] این رشته با هر رشته حاوی ارقام عددی 0 تا 9 مطابقت دارد.
  • [[:alnum:]] این رشته با هر رشته حاوی کاراکتر های الفبایی aA تا zZ و 0 تا 9 مطابقت دارد.
  • [[:space:]] با هر رشته ای که دارای فاصله باشد مطابقت دارد.

گروه بندی

شما می توانید از پرانتر ( ) برای اعمال کمیت نما ها به کل الگو ها استفاده کنید.

مثال

در این مثال کلمه banana را با یک الگوی خاص جستجو می کنیم:

تماشا در حالت تمام صفحه

خروجی

1

مثال های بیشتر

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

پیدا کردن شماره موبایل

در این مثال ما یک الگو برای پیدا کردن و اعتبار سنجی شماره موبایل ایجاد کرده ایم:


این قسمت/بخشی از محتوا مخفی شده است و فقط برای اعضای وب سایت قابل مشاهده می باشد، لطفاً با حساب کاربری وارد شوید.

همانطور که در مثال بالا می بینید ما از تابع preg_match استفاده کرده ایم که دو پارامتر را در آن مشخص کرده ایم.

پارامتر اول الگو و قاعده ما برای جستجو در رشته است: "/^[0]{1}[9]{1}\d{9}$/"

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

و در آخر شرط را تعریف کرده ایم که درستی و اعتبار شماره تلفن را بررسی می کند.

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

  • /^ : شروع رشته را مشخص می کند که از 0 هست.
  • [0]{1} : مشخص می کند که به تعداد یک رقم باید عدد 0 در ابتدای رشته وجود داشته باشد.
  • [9]{1} : بعد از آن مشخص می کنیم که به تعداد یک رقم بعد از 0 باید عدد 9 وجود داشته باشد.
  • \d{9} : همانطور که در جدول بالا اشاره شد عبارت متا کاراکتر \d یک رقم در محدوده 0 تا 9 را مشخص می کند. و با استفاده از {9} گفته ایم که باید 9 رقم عدد بین بازه 0 تا 9 وجود داشته باشد ( بعد از 0 و 9 که الگو رامشخص کردیم )
  • $/ : پایان رشته را مشخص می کند و می گوید که دقیقاً همینجا پایان الگو و رشته ما خواهد بود.

با توجه به توضیحات بالا تابع preg_match() بررسی می کند که آیا شماره موبایل وارد شده با الگوی تعریف شده توسط ما (09*********) مطابقت دارد یا خیر.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
بنر تبلیغاتی ج