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

مقدمه‌ای بر عبارات منظم

عبارات منظم (یا Regex) تشکیل‌گردیده از الگوها و نمادهای ویژه هستند که برای تعیین الگوهای خاص در یک String متنی (مثل ایمیل‌ها، شماره تلفن‌ها، آدرس‌ها و …) به کار می‌روند. این الگوها می‌توانند بسیار ساده یا بسیار مشکل باشند و به برنامه‌نویسان امکان تعیین الگوهای دلخواه برای جستجو و استخراج اطلاعات از متن‌ها را می‌دهند.

یک عبارت منظم معمولاً شامل ترکیب الگوها و نمادهای ویژه می‌باشد که برای جستجو و تطبیق با متون مورد نظر به کار می‌رود. در PHP، شما می‌توانید از توابع مختلفی مانند preg_match()، preg_replace() و preg_split() برای استفاده از عبارات منظم در برنامه‌های خود استفاده کنید.

الگوهای ساده

در ساده‌ترین حالت، یک عبارت منظم می‌تواند یک الگوی ثابت را تعیین کند. به عنوان مثال، اگر می‌خواهیم بررسی کنیم که آیا یک String متنی “Hello” را شامل می‌شود یا خیر، می‌توانیم از یک عبارت منظم ساده استفاده کنیم.

$text = "Hello, World!";
$pattern = "/Hello/";
if (preg_match($pattern, $text)) {
    echo "الگو یافت شد.";
} else {
    echo "الگو یافت نشد.";
}

در این مثال، عبارت /Hello/ یک الگو ساده به معنای دقیق “Hello” است. تابع preg_match() بررسی می‌کند که آیا رشته $text الگو را شامل می‌شود یا خیر. اگر الگو یافت شود، پیام “الگو یافت شد.” نمایش داده می‌شود.

کاراکترهای ویژه

عبارات منظم به شما امکان تعیین الگوهای پیچیده‌تر را می‌دهند. برای اعمال عملیات منطقی مختلف می‌توانید از کاراکترهای ویژه بهره ببرید. به عنوان مثال:

  • . (نقطه): برای نمایش هر کاراکتر به جز کاراکتر خط جدید.
  • *: نمایش صفر یا بیشتر از کاراکتر قبلی.
  • +: نمایش یک یا بیشتر از کاراکتر قبلی.
  • ?: نمایش صفر یا یک بار از کاراکتر قبلی.
  • []: متناسب با یکی از کاراکترهای موجود در بین کروشه‌ها.
  • (): تشکیل یک گروه از الگوها.

مثال 1: پیدا کردن ایمیل‌ها در یک متن

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

$text = "این یک متن حاوی ایمیل‌ها است: [email protected] و [email protected]";
$pattern = "/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/";
preg_match_all($pattern, $text, $matches);
print_r($matches[0]);

در این مثال، الگو /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/ برای تطابق با ایمیل‌ها استفاده شده است. تابع preg_match_all() تمام ایمیل‌های موجود در متن را در آرایه $matches ذخیره می‌کند.

مثال 2: ترکیب الگوها

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

$text = "متن حاوی ایمیل‌ها [email protected] و شماره تلفن‌ها 123-456-7890 و 321-555-6789";
$email_pattern = "/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/";
$phone_pattern = "/\d{3}-\d{3}-\d{4}/";
preg_match_all($email_pattern, $text, $email_matches);
preg_match_all($phone_pattern, $text, $phone_matches);
print_r($email_matches[0]);
print_r($phone_matches[0]);

در این مثال، دو الگوی جداگانه برای ایمیل‌ها و شماره‌های تلفن تعیین شده و توسط توابع preg_match_all() مورد استفاده قرار گرفته‌اند.

استفاده از عبارات منظم برای جایگزینی متن

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

مثال: جایگزینی ایمیل‌ها در یک متن

$text = "این یک متن حاوی ایمیل‌ها [email protected] و [email protected] است.";
$pattern = "/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/";
$replacement = "ایمیل";
$new_text = preg_replace($pattern, $replacement, $text);
echo $new_text;

در این مثال، تمام ایمیل‌ها با کلمه “ایمیل” جایگزین شده‌اند.

استفاده از عبارات منظم برای تقسیم متن

یکی از کاربردهای دیگر عبارات منظم در PHP، تقسیم یک متن به قسمت‌های مختلف است. برای این کار، می‌توانید از تابع preg_split() استفاده کنید.

مثال: تقسیم متن بر اساس فاصله

$text = "این یک متن نمونه است.";
$pattern = "/\s+/"; // الگوی فاصله یک یا بیشتر
$parts = preg_split($pattern, $text);
print_r($parts);

در این مثال، متن بر اساس فاصله‌ها به قسمت‌های مختلف تقسیم شده و در آرایه $parts ذخیره می‌شود.

نکات مهم در استفاده از عبارات منظم

  • عبارات منظم case-insensitive یا حساس به بزرگی و کوچکی هستند. این بدان معناست که عبارات منظم به طور پیش‌فرض حروف بزرگ و کوچک را متفاوت می‌شناسند. برای غیرفعال کردن این حساسیت، می‌توانید از نماد i در انتهای الگو استفاده کنید. به عنوان مثال: /pattern/i.
  • در عبارات منظم می‌توانید از کاراکتر ^ به عنوان نماد شروع متن و از کاراکتر $ به عنوان نماد پایان متن استفاده کنید. به عنوان مثال: /^start.*end$/ تطابق با یک متن که با “start” شروع شده و با “end” پایان می‌یابد.
  • برای تعیین تعداد مشخصی از تکرار یک الگو می‌توانید از کاراکترهای {} استفاده کنید. به عنوان مثال، /pattern{2,4}/ با الگو “pattern” تطابق می‌کند که دقیقاً بین 2 تا 4 تکرار از آن وجود داشته باشد.
  • برای تطابق با یکی از چندین الگو، می‌توانید از نماد | (یا) استفاده کنید. به عنوان مثال، /pattern1|pattern2/ تطابق با “pattern1” یا “pattern2” دارد.
  • شما می‌توانید از کاراکترهای ویژه برای نمایش کاراکترهای معمولی مانند . یا * استفاده کنید. برای این کار، می‌توانید کاراکتر \ یا / را در جلوی آنها قرار دهید. به عنوان مثال، /example\*/ تطابق با “example*” دارد.
  • استفاده از عبارات منظم می‌تواند منجر به اجرای محاسبات زمان‌بر شود. بنابراین، اگر نیاز به انجام محاسبات تکراری با الگوهای منظم دارید، باید از بهینه‌سازی‌های مرتبط استفاده کنید تا عملکرد برنامه بهینه باشد.

نتیجه‌گیری

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