دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / عبارات باقاعده/رگکس (PHP RegEx)

عبارات باقاعده/رگکس (PHP RegEx)

30 دقیقه Article

عباراتِ باقاعده (RegEx): قدرتِ جستجویِ بی‌پایان 🔍💎

عبارات باقاعده (Regular Expressions) الگوهایی هستند که برای جفت کردن (Matching) و دستکاریِ متن‌ها استفاده می‌شوند. در PHP ما از استانداردِ قدرتمند PCRE استفاده می‌کنیم.

توابع اصلی RegEx در PHP:

  • preg_match(): آیا الگو در متن وجود دارد؟ (۰ یا ۱ برمی‌گرداند).
  • preg_match_all(): پیدا کردنِ تمامِ مواردِ مطابق (تعداد را برمی‌گرداند).
  • preg_replace(): جایگزینیِ الگو با یک متنِ جدید.

ساختارِ یک الگو:

الگوها معمولاً بین دو علامتِ / قرار می‌گیرند. مثلاً /pars/i به دنبالِ کلمه pars می‌گردد و حرف i یعنی حساس به حروفِ بزرگ و کوچک نباشد.

کاراکترهایِ جادویی:

  • . : هر کاراکتری.
  • ^ : شروعِ متن.
  • $ : پایانِ متن.
  • [a-z] : هر حرفی بین a تا z.

اعتبارسنجیِ ساده:

{code_block('$pattern = "/php/i";\n$str = "I love PHP!";\necho preg_match($pattern, $str); // ۱')}
کاربردِ حیاتی: از RegEx برایِ اعتبارسنجیِ ایمیل‌ها، شماره تماس، فرمتِ پسوردها و پاکسازیِ متونِ وبلاگ استفاده می‌شود.
تستِ آنلاین: یادگیری RegEx سخت است! همیشه قبل از نوشتنِ کد، الگویِ خود را در سایت‌هایی مثل regex101.com (با انتخاب گزینه PHP) تست کنید.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی منطق و پرفورمنس در PHP 🐘⚙️

در سطوحِ حرفه‌ای، اجرایِ کد فقط کافی نیست؛ "چگونگیِ" اجرا و بهینه‌سازیِ آن تفاوتِ بینِ یک کدِ معمولی و یک معماریِ مقیاس‌پذیر را رقم می‌زند.

۱. بهینه‌سازیِ محاسبات با BCMath

در سیستم‌هایِ مالی و بانکی، دقتِ اعشاریِ معمولی (Float) به دلیلِ خطاهایِ گرد کردنِ باینری قابلِ اعتماد نیست. برایِ این کار، PHP افزونه‌ای به نام BCMath دارد که محاسبات را با دقتِ نامحدود و به صورتِ رشته‌ای انجام می‌دهد تا حتی یک ریال هم در محاسبات جابجا نشود.

۲. ساختارِ HashTable در آرایه‌ها

آرایه‌ها در PHP برخلافِ بسیاری از زبان‌ها، در واقع Ordered Hash Maps هستند. هر زمان که شما عضوی به آرایه اضافه می‌کنید، PHP یک سیستمِ Bucket و Hash را در پشتِ صحنه مدیریت می‌کند تا سرعتِ دسترسی به داده‌ها در حالتِ میانگین O(1) باقی بماند.

۳. مفهومِ Closures و کپسوله‌سازی

توابعِ بی‌نام (Anonymous) در PHP فقط برایِ کارهایِ موقت نیستند. با استفاده از کلمه کلیدی use، می‌توانید متغیرهایی را از اسکوپِ بیرونی به داخلِ تابع وارد کنید و یک Closure بسازید که پایه و اساسِ بسیاری از الگوهایِ طراحی مدرن است.

نکته طلایی: همیشه برایِ شرط‌هایِ پیچیده از Early Return استفاده کنید. به جایِ تودرتو کردنِ ifها، ابتدا حالت‌هایِ خطا را چک کرده و از تابع خارج شوید تا خواناییِ کد به حداکثر برسد.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

جستجویِ متن با RegEx Medium
سوال تمرین

یک الگو بنویسید که در متن "Hello World" به دنبال کلمه "Hello" بگردد (بدون حساسیت به حروف بزرگ و کوچک). از preg_match استفاده کنید.

پاسخ تمرین
PHP
<?php
$str = "Hello World";
$pattern = "/Hello/i";
echo preg_match($pattern, $str);
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.