(Regular Expressions) در PHP

عبارتهای منظم (Regular Expressions) در PHP ابزار قدرتمندی برای تطبیق الگو، جستجو و جایگزینی رشتهها هستند. PHP از دو کتابخانه اصلی برای کار با regex پشتیبانی میکند:
- PCRE (عبارتهای منظم سازگار با Perl): روش رایج و مدرن که از توابع
preg_
استفاده میکند. - POSIX Regular Expressions: روشی قدیمی که از توابع
ereg_
استفاده میکرد (این روش از نسخه 5.3.0 حذف و در PHP 7.0.0 منسوخ شد).
در ادامه توابع PCRE و نمونههای کاربردی توضیح داده شده است:
۱. توابع رایج
preg_match()
: بررسی میکند که آیا یک الگو با رشتهای مطابقت دارد یا نه.preg_match_all()
: تمام تطابقهای یک الگو در یک رشته را پیدا میکند.preg_replace()
: جستجو و جایگزینی زیررشتههایی که با یک الگو مطابقت دارند.preg_split()
: رشته را با استفاده از یک عبارت منظم تقسیم میکند.preg_replace_callback()
: جستجو کرده و برای هر تطابق یک تابع را فراخوانی میکند.
۲. نمونههای کاربردی
نمونه preg_match()
<?php
$pattern = “/php/i”; // تطبیق “php” بهصورت غیرحساس به بزرگی و کوچکی
$text = “I love PHP programming!”;
if (preg_match($pattern, $text)) {
echo “الگو پیدا شد!”;
} else {
echo “الگو پیدا نشد.”;
}
?>
خروجی: الگو پیدا شد!
نمونه preg_match_all()
<?php
$pattern = “/[aeiou]/i”; // تطبیق تمام حروف صدادار (غیرحساس به بزرگی و کوچکی)
$text = “PHP is amazing!”;
preg_match_all($pattern, $text, $matches);
print_r($matches[0]);
?>
خروجی:
Array
(
[0] => I
[1] => i
[2] => a
[3] => a
[4] => i
)
نمونه preg_replace()
<?php
$pattern = “/bad/i“;
$replacement = “good”;
$text = “This is a bad example.”;
echo preg_replace($pattern, $replacement, $text);
?>
خروجی: This is a good example.
نمونه preg_split()
<?php
$pattern = “/[\s,]+/”; // تقسیم با فاصله یا کاما
$text = “PHP, HTML, CSS, JavaScript”;
$result = preg_split($pattern, $text);
print_r($result);
?>
خروجی:
Array
(
[0] => PHP
[1] => HTML
[2] => CSS
[3] => JavaScript
)
۳. اصلاحکنندهها (Modifiers)
اصلاحکنندهها ویژگیهای تطبیق را تغییر میدهند. مثالها:
i
: تطبیق غیرحساس به بزرگی و کوچکی حروف.m
: فعالسازی حالت چندخطی.s
: علامت.
شامل کاراکترهای خط جدید نیز میشود.u
: فعالسازی حالت UTF-8.
۴. کاراکترهای ویژه در الگوها
.
: هر کاراکتر بهجز خط جدید را مطابقت میدهد.^
: شروع رشته را مطابقت میدهد.$
: انتهای رشته را مطابقت میدهد.\d
: هر عدد (0-9) را مطابقت میدهد.\w
: هر کاراکتر کلمه (حروف، اعداد، آندرلاین) را مطابقت میدهد.\s
: هر فاصله (فاصله، تب، خط جدید) را مطابقت میدهد.[]
: هر کاراکتر داخل کروشه را مطابقت میدهد (مثلاً[a-z]
).()
: گروهبندی برای ارجاعها.|
: عملگر OR.*
: صفر یا بیشتر تکرار.+
: یک یا بیشتر تکرار.?
: صفر یا یک تکرار.
۵. مثال پیشرفته
بررسی صحت یک آدرس ایمیل
<?php
$email = “test@example.com”;
$pattern = “/^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/”;
if (preg_match($pattern, $email)) {
echo “ایمیل معتبر است!”;
} else {
echo “ایمیل نامعتبر است.”;
}
?>
خروجی: ایمیل معتبر است!
اگر به توضیحات بیشتری یا مثالهای خاصتری نیاز دارید، اطلاع دهید!
دیدگاهتان را بنویسید