در حال بارگذاری...

عبارات منظم

عبارات منظم (Regular Expressions) در پی‌اچ‌پی ابزاری قدرتمند برای پردازش و تحلیل متن هستند. این ابزار به توسعه‌دهندگان اجازه می‌دهد تا الگوهایی برای جستجو، جایگزینی، اعتبارسنجی و استخراج داده‌ها تعریف کنند. استفاده از عبارات منظم در پی‌اچ‌پی باعث کاهش حجم کد، افزایش دقت در پردازش متن و بهبود عملکرد نرم‌افزار می‌شود. در توسعه وب و نرم‌افزار، کاربردهای رایج شامل بررسی صحت ایمیل‌ها، شماره تلفن‌ها، استخراج داده‌های لاگ و فیلتر کردن ورودی کاربران است.
پی‌اچ‌پی از توابع داخلی مانند preg_match، preg_match_all، preg_replace و preg_split برای کار با عبارات منظم پشتیبانی می‌کند. برای استفاده مؤثر از این ابزار، توسعه‌دهندگان باید با سینتکس، کلاس‌های کاراکتری، کمیاب‌کننده‌ها (quantifiers)، مرزهای رشته، گروه‌بندی و روش‌های greedy/non-greedy آشنا باشند. ترکیب عبارات منظم با ساختارهای داده، الگوریتم‌ها و اصول برنامه‌نویسی شیء‌گرا در پی‌اچ‌پی باعث ایجاد راه‌حل‌های مقیاس‌پذیر و قابل نگهداری می‌شود.
در این آموزش، شما با نحوه استفاده از عبارات منظم برای اعتبارسنجی ایمیل و شماره تلفن، استخراج متن و پردازش داده‌های مبتنی بر الگو آشنا خواهید شد. همچنین با مشکلات رایج مانند نشت حافظه، مدیریت نامناسب خطا و الگوریتم‌های ناکارآمد آشنا شده و راه‌حل‌های عملی برای آن‌ها خواهید آموخت.

مثال پایه

php
PHP Code
<?php
// مثال پایه عبارات منظم در پی‌اچ‌پی
$text = "ایمیل من [email protected] است و شماره تلفنم 09123456789 می‌باشد.";

// استخراج تمام اعداد
preg_match_all('/\d+/', $text, $numbers);
echo "اعداد یافت شده: ";
print_r($numbers[0]);

// اعتبارسنجی ایمیل
if (preg_match('/[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/', $text, $email)) {
echo "ایمیل یافت شده: " . $email[0];
} else {
echo "ایمیل معتبر یافت نشد.";
}
?>

در این مثال، ابتدا متغیر $text شامل یک ایمیل و شماره تلفن تعریف شده است. تابع preg_match_all با الگوی \d+ برای یافتن تمامی اعداد استفاده می‌شود؛ \d+ به معنای یک یا چند رقم متوالی است. نتایج در آرایه $numbers ذخیره شده و با print_r نمایش داده می‌شوند.
سپس با استفاده از preg_match ایمیل موجود در متن بررسی می‌شود. الگوی [a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4} برای تشخیص ساختار رایج ایمیل طراحی شده است. اگر الگو مطابقت داشته باشد، ایمیل پیدا شده نمایش داده می‌شود؛ در غیر این صورت پیام "ایمیل معتبر یافت نشد" ظاهر می‌گردد. این مثال نحوه کاربرد پایه‌ای عبارات منظم در پی‌اچ‌پی و استخراج داده‌ها را نشان می‌دهد.

مثال کاربردی

php
PHP Code
<?php
// مثال کاربردی با OOP
class Validator {
private string $emailPattern = '/^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/';
private string $phonePattern = '/^09\d{9}$/';

public function validateEmail(string $email): bool {
return preg_match($this->emailPattern, $email) === 1;
}

public function validatePhone(string $phone): bool {
return preg_match($this->phonePattern, $phone) === 1;
}
}

$validator = new Validator();
$emails = ["[email protected]", "invalid-email"];
$phones = ["09123456789", "12345"];

foreach ($emails as $email) {
echo $email . " معتبر است؟ " . ($validator->validateEmail($email) ? "بله" : "خیر") . "\n";
}

foreach ($phones as $phone) {
echo $phone . " معتبر است؟ " . ($validator->validatePhone($phone) ? "بله" : "خیر") . "\n";
}
?>

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

بهترین شیوه‌ها در استفاده از عبارات منظم شامل تعریف الگوهای واضح و قابل نگهداری، استفاده بهینه از توابع داخلی و encapsulate کردن منطق در کلاس‌ها یا توابع است. اشتباهات رایج شامل استفاده از الگوهای ناکارآمد، نشت حافظه و مدیریت نامناسب خطاها هستند. برای دیباگ، ابزارهای Regex و Debugger های پی‌اچ‌پی توصیه می‌شوند. بهینه‌سازی عملکرد شامل کاهش greedy quantifiers، استفاده از کلاس‌های کاراکتری کارآمد و جلوگیری از backtracking غیرضروری است. برای امنیت، ورودی‌های کاربر باید sanitize شوند و از الگوهای ناامن اجتناب گردد. رعایت این اصول موجب افزایش پایداری، نگهداری و کارایی برنامه‌های پی‌اچ‌پی می‌شود.

📊 جدول مرجع

پی‌اچ‌پی Element/Concept Description Usage Example
\d نمایش یک رقم preg_match('/\d/', '123')
\w نمایش حرف، رقم یا underscore preg_match('/\w/', 'abc_123')
+ یک یا چند تکرار عنصر قبلی preg_match('/\d+/', '12345')
* صفر یا چند تکرار عنصر قبلی preg_match('/a*/', 'aaab')
^ شروع رشته preg_match('/^سلام/', 'سلام دنیا')
$ پایان رشته preg_match('/دنیا$/', 'سلام دنیا')

پس از یادگیری عبارات منظم در پی‌اچ‌پی، می‌توان به راحتی از آن‌ها برای اعتبارسنجی داده‌ها، پردازش متن و استخراج اطلاعات استفاده کرد. با ترکیب این مفاهیم با ساختار داده‌ها، الگوریتم‌ها و اصول OOP، می‌توان راه‌حل‌های مقیاس‌پذیر و قابل نگهداری ایجاد کرد. برای تسلط بیشتر، مطالعه ویژگی‌های پیشرفته مانند lookahead، assertions و patterns بازگشتی و تمرین منظم توصیه می‌شود.

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

2
سوالات
🎯
70%
برای قبولی
♾️
زمان
🔄
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود