اسفند ۲, ۱۳۹۷ Mostafa بدون دیدگاه

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

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

عبارات منظم

عبارات منظم برای جست و جوی الگویی در داده­ها به کار می رود. تطبیق عبارات منظم در php

خیلی شبیه تطبیق رشته در strstr می باشد زیرا زیر رشته ای را در زیررشته ی دیگر 

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

انتهای رشته ای موجود است یا خیر، آن بخش از الگو می تواند تکرار شود یا کاراکتر های موجود 

در الگو باید از نوع خاصی باشند.

 مجموعه ی کاراکترها

 .:می توان از نقطه به عنوان یک کاراکتر عمومی برای هر کاراکتری غیر از \n استفاده کرد 

به عنوان مثال عبارت منظم . At با رشته های ‘cat’ یا ‘cat’ یا  ‘mat’ تطبیق می کند، اگر بخواهید

 کاراکتر نقطه را به کاراکتری بین a تا z محدود کنید می توانید مجموعه ی[a-z] را انتخاب کنید.

براکت ها  برای محدودسازی جست و جوی مجموعه ای از کاراکتر های درون براکت به کار می رود.

 [a-z  A-Z]: مجموعه ای از حروف انگلیسی کوچک و بزرگ را در بر می گیرد.

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

 مثلا [a^z] یعنی با هر کاراکتری که بین  a تا z  نباشد تطبیق می کند.

 *: معنای * این است که کاراکتر می تواند ۰ یا چند بار تکرار شود.

+ : معنای + این است که کاراکتر می تواند یک یا چند بار تکرار شود.

{ عدد} : با استفاده از عبارات عددی که در داخل { } قرار می گیرد می توان مشخص کرد که

 کاراکتر چند بار تکرار شود.

Pipe) |): این علامت به معنای انتخاب یکی از عبارات می باشد

برای تطبیق با یکی از کاراکتر های ویژه { <= $  . \ ) باید از علامت \ جلوی آن استفاده کرد.

 ?: یعنی عبارت می تواند ۰ یا ۱ بار تکرار شود.

مثال:

۳}}:حداقل ۳ بار تکرار می شود.

۲,۵}} حداقل ۲ بار و حداکثر ۳ بار تکرار می شود.

۳, }}:حداقل ۳ بار و حداکثر بی نهایت بار تکرار می شود.

اگر علامت ^  خارج از براکت باشد، یعنی حتما باید اول رشته، رشته ی داخل براکت باشد.

اگر علامت $ داشته باشیم یعنی عبارت قبل از آن باید حتما در آخر رشته بیاید.

تابع preg_match : ساده‌ترین شکل استفاده از عبارت‌های منظم، عمل جستجو است که این تابع انجام آن را بر عهده دارد. (در صورت کار با تابع سوالات خود را در انجمن مطرح نمایید)

این تابع سه پارامتر ورودی دارد که دو پارامتر ابتدایی این تابع اجباری هستند که به ترتیب «عبارت منظم» و «رشته‌ی هدف» را مشخص می‌کنند. برای مثال به نمونه کد زیر توجه کنید:

<?php
	$found = preg_match( '/pctricks/', 'http://pctricks.ir' );
	echo $found; // عدد ۱ را در خروجی نشان می‌دهد
?>

 

مقدار خروجی این تابع عدد «۰» یا «۱» به معنی پیدا نشدن یا پیدا شدن عبارت مورد جستجو است. استفاده از علامت ممیز«/» قبل و بعد از عبارت منظم اجباری است.

به مثال بعدی دقت کنید:

 

<?php
    $found = preg_match( '/https?:\/\//', 'http://pctricks.ir' );
    echo $found; // عدد ۱ را در خروجی نشان می‌دهد
?>

 

عبارت منظم به کار رفته در مثال بالا برای یافتن «‎https://‎» یا «‎http://‎» استفاده می‌شود. برای به کارگیری علامت ممیز «/» داخل عبارت منظم، لازم است تا آن را با ممیزوارو «\» پیشوند کنید. علامت سوال «?» پس از حرف «s» به معنی اختیاری بودن آن است.

در مثال بعدی از علامت Caret «^» و نشان دلار «$» به معنی ابتدا و انتهای خط استفاده می‌کنیم:

 

<?php
    $found = preg_match( '/^09[123]\d{8}$/', '09391234567' );
    echo $found; // عدد ۱ را در خروجی نشان می‌دهد
?>

 

دستور بالا رشته‌ی مقابل خود را برای شباهت با شماره‌ی موبایل بررسی می‌کند. استفاده از علامت‌های Caret و نشان دلار سبب می‌شود تا فقط رشته‌هایی پذیرفته شوند که پیش و پس از شماره‌ی موبایل حرف دیگری وجود نداشته باشد.

پارامترهای دیگر تابع preg_match برای «خارج کردن بخش‌هایی از عبارت در قالب متغیر»،‌ «تنظیمات پیشرفته‌ی عبارت منظم» و «محل شروع جستجو» می‌شوند که شرح آن‌ها در این مقاله‌ی کوتاه نمی‌گنجد.

preg_replace

تابع مفید بعدی preg_replace است که وظیفه‌ی جستجو با کمک عبارت منظم و جایگزین کردن را بر عهده دارد. در هنگام جایگزین کردن می‌توان از متغیرهای تعریف شده در عبارت منظم استفاده کرد. به مثال زیر توجه کنید:

 

<?php
	$hide_mobile = preg_replace( '/09[123]\d{8}/', '****', 'Mobile: 09391234567' );
	echo $hide_mobile; // Mobile: ****
?>

 

کد بالا عبارت مقابل خود را برای شماره‌ی موبایل جستجو می‌کند و آن را با چهار ستاره «****» جایگزین می‌کند.
برای تعریف متغیر درون عبارت منظم و استفاده از آن در رشته‌ی جایگزین، بخش مورد نظر را داخل پرانتز قرار می‌دهیم و به ترتیب با «‎$۱‎»، «‎$۲‎» و … آن‌ها را فراخوانی می‌کنیم:

 

<?php
    $add_code_to_mobile = preg_replace( '/0(9[123]\d{8})/', '+98$1', 'Mobile: 09391234567' );
    echo $add_code_to_mobile; // Mobile: +989391234567
?>

 

کد بالا رشته‌ی مقابل خود را برای یافتن شماره‌ی موبایل بدون کد کشور جستجو می‌کند، شماره‌های قرار گرفته مقابل «۰» را در پرانتز قرار می‌دهد تا متغیری از آن بسازد و سپس شماره‌ی یافته شده را با عبارت «‎+۹۸$۱‎» جایگزین می‌کند. دقت کنید که عبارت «‎$۱‎» پس از «‎+۹۸‎» به معنی اولین متغیر تعریف شده در عبارت منظم است.


نظرات

توجه : لطفاً فقط نظرات خود را از این طریق ارسال نمایید و سوالات و مشکلات خود را در انجمن سایت مطرح نمایید.

دیدگاهتان را بنویسید