آموزش جامع عبارات باقاعده (Regex) در PHP - از مقدماتی تا پیشرفته

آموزش جامع عبارات باقاعده (Regex) در PHP - از مقدماتی تا پیشرفته

امیر بصیر 6 ماه پیش 104 بازدید مدت زمان مطالعه 3 دقیقه

مشخصات وبلاگ

آیدینویسندهتاریخ ایجاد
#46امیر بصیر سه‌شنبه ، 6 خرداد 1404
مقدمه‌ای بر عبارات باقاعده (Regex)
عبارات باقاعده یا Regular Expressions که به اختصار Regex نامیده می‌شوند، یک ابزار قدرتمند برای کار با متن هستند. این ابزار به شما امکان می‌دهد تا الگوهای خاصی را در رشته‌های متنی جستجو، جایگزین یا استخراج کنید. Regex در بسیاری از زبان‌های برنامه‌نویسی از جمله PHP پشتیبانی می‌شود و در پردازش متن، اعتبارسنجی فرم‌ها، تجزیه لاگ‌ها و بسیاری از موارد دیگر کاربرد دارد.
در PHP، توابعی مانند preg_match(), preg_replace(), و preg_split() برای کار با Regex استفاده می‌شوند. این توابع از PCRE (Perl Compatible Regular Expressions) پشتیبانی می‌کنند که یک کتابخانه بسیار قوی برای پردازش عبارات باقاعده است.

چرا از Regex استفاده کنیم؟

- جستجوی پیشرفته: پیدا کردن الگوهای پیچیده در متن.
- اعتبارسنجی داده‌ها: مانند چک کردن ایمیل، شماره تلفن و غیره.
- تغییر متن: جایگزینی یا حذف بخش‌های خاصی از متن.
- تجزیه متن: استخراج اطلاعات خاص از لاگ‌ها یا فایل‌های متنی.
مزایای استفاده از Regex در PHP:
- سرعت بالا در پردازش متن
- انعطاف‌پذیری فوق‌العاده
- قابلیت استفاده در توابع مختلف PHP مانند preg_match, preg_replace
- پشتیبانی از یونیکد و کاراکترهای چندبایتی
معایب و محدودیت‌ها:
- پیچیدگی درک الگوهای پیشرفته
- مشکل‌آفرین در صورت استفاده نادرست (مصرف منابع زیاد)
- نیاز به تست دقیق به دلیل رفتارهای غیرمنتظره در برخی الگوها
در ادامه، با مثال‌های عملی از ساده تا پیشرفته، Regex را در PHP بررسی خواهیم کرد.


مثال‌های Regex در PHP

۱- جستجوی ساده با preg_match()

$text		= "Hello, World!";
$pattern	= "/World/";

if ( preg_match ( $pattern, $text ) ) {
	
	echo "Match found!";
} else {
	
	echo "No match found.";
}
// Output: Match found!
توضیح:
- الگوی "/World/" به دنبال کلمه World در متن می‌گردد.
- preg_match() در صورت پیدا کردن الگو، true برمی‌گرداند.


۲- استفاده از کاراکترهای ویژه (Metacharacters)

$text		= "The price is 100 dollars.";
$pattern	= "/\d /"; // \d matches any digit

if ( preg_match ( $pattern, $text, $matches ) ) {
	
	echo "Found number: " . $matches[0];
}
// Output: Found number: 100
توضیح:
- \d هر رقم (۰-۹) را تطبیق می‌کند.
- به معنی یک یا چند تکرار از کاراکتر قبلی است.


۳- اعتبارسنجی ایمیل

$email		= "test@example.com";
$pattern	= "/^[a-zA-Z0-9._% -] @[a-zA-Z0-9.-] \.[a-zA-Z]{2,}$/";

if ( preg_match ( $pattern, $email ) ) {
	
	echo "Valid email!";
} else {
	
	echo "Invalid email!";
}
// Output: Valid email!
توضیح:
- ^ و $ نشان‌دهنده شروع و پایان رشته هستند.
- [a-zA-Z0-9._% -] بخش قبل از @ را چک می‌کند.
- @[a-zA-Z0-9.-] دامنه ایمیل را بررسی می‌کند.
- \.[a-zA-Z]{2,}$ پسوند دامنه (مثل .com) را اعتبارسنجی می‌کند.


۴- جایگزینی متن با preg_replace()

$text			= "Today is 2023-10-05";
$pattern		= "/(\d{4})-(\d{2})-(\d{2})/";
$replacement	= "$3/$2/$1"; // Changes YYYY-MM-DD to DD/MM/YYYY

echo preg_replace ( $pattern, $replacement, $text );
// Output: Today is 05/10/2023
توضیح:
- (\d{4}) سال با ۴ رقم را می‌گیرد و در گروه ۱ ذخیره می‌کند.
- $3/$2/$1 ترتیب تاریخ را تغییر می‌دهد.


۵- تجزیه متن با preg_split()

$text		= "Apple,Banana,Orange,Mango";
$pattern	= "/,/";
$fruits		= preg_split ( $pattern, $text );

print_r($fruits);
/* Output:
Array
(
	[0]	=> Apple
	[1]	=> Banana
	[2]	=> Orange
	[3]	=> Mango
)
*/
توضیح:
- preg_split() متن را بر اساس جداکننده , تقسیم می‌کند.


۶- مثال پیشرفته: استخراج لینک‌های HTML

<?php
$html		= '<a href="https://example.com">Example</a> <a href="https://google.com">Google</a>';
$pattern	= '/<a\s href="\'["\']/i';

preg_match_all ( $pattern, $html, $matches );
print_r ( $matches[1] );
/* Output:
Array
(
	[0]	=> https://example.com
	[1]	=> https://google.com
)
*/
?>
توضیح:
- &lt;a\s href= تگ &lt;a&gt; و ویژگی href را پیدا می‌کند.
- ([&quot;\&apos;][^&quot;\&apos;] [&quot;\&apos;]) مقدار href را استخراج می‌کند.


نتیجه‌گیری

عبارات باقاعده (Regex) یک ابزار قدرتمند برای پردازش متن در PHP هستند. با یادگیری این ابزار، می‌توانید عملیات پیچیده روی رشته‌ها را به راحتی انجام دهید. در این مقاله، از مباحث پایه تا مثال‌های پیشرفته را بررسی کردیم. حالا شما می‌توانید از Regex در پروژه‌های خود استفاده کنید!
Regex در PHPآموزش عبارات باقاعدهمثال های Regexالگوهای متن در PHPRegular Expressions

نظرات

برای ارسال نظر باید وارد شوید. ورود یا ثبت نام
هنوز نظری ثبت نشده است.
بازدید روزانه: 28
بازدید هفتگی: 151
بازدید ماهانه: 151
بازدید سالانه: 8070
0%