عبارات منظم (RegEx)
کار با عبارات منظم در PHP — preg_match، preg_replace، preg_split و الگوهای پرکاربرد
عبارت منظم (RegEx) چیست؟
عبارت منظم (Regular Expression) یک زبان کوچک برای جستجو و تطبیق الگو در متن است. با RegEx میتوانید بررسی کنید که آیا یک متن الگوی خاصی دارد یا نه.
توابع RegEx در PHP
| تابع | توضیح |
|---|---|
preg_match() | بررسی تطابق (اولین مورد) |
preg_match_all() | پیدا کردن همه تطابقها |
preg_replace() | جایگزینی با الگو |
preg_split() | تقسیم متن با الگو |
ساختار الگو
الگوها بین / قرار میگیرند:
/الگو/پرچمها
کاراکترهای خاص
| کاراکتر | توضیح | مثال |
|---|---|---|
. | هر کاراکتر | /h.llo/ → hello |
\d | عدد (0-9) | /\d+/ → 123 |
\D | غیر عدد | — |
\w | حرف، عدد یا _ | — |
\W | غیر حرف | — |
\s | فاصله (space, tab) | — |
\S | غیر فاصله | — |
^ | شروع رشته | /^Hello/ |
$ | پایان رشته | /world$/ |
کمیتسنجها (Quantifiers)
| کمیت | توضیح | مثال |
|---|---|---|
* | صفر یا بیشتر | /a*/ |
+ | یک یا بیشتر | /a+/ |
? | صفر یا یک | /a?/ |
{n} | دقیقاً n تا | /a{3}/ → aaa |
{n,} | حداقل n تا | /a{2,}/ |
{n,m} | بین n و m | /a{2,4}/ |
preg_match — بررسی تطابق
<?php
$email = "user@example.com";
if (preg_match("/^[^@]+@[^@]+\.[^@]+$/", $email)) {
echo "ایمیل معتبر است!";
}
// گرفتن مقدار تطبیقیافته
preg_match("/(\d+)/", "من 25 سال دارم", $matches);
echo $matches[0]; // 25
echo $matches[1]; // 25 (گروه اول)
?>
preg_match_all — همه تطابقها
<?php
$text = "تلفنها: 02112345678 و 02187654321";
preg_match_all("/\d{11}/", $text, $matches);
print_r($matches[0]);
// ["02112345678", "02187654321"]
?>
preg_replace — جایگزینی
<?php
// حذف فاصلههای اضافی
$text = "سلام دنیا";
$clean = preg_replace("/\s+/", " ", $text);
// "سلام دنیا"
// پنهان کردن شماره کارت
$card = "1234-5678-9012-3456";
$masked = preg_replace("/\d{4}(?=-\d{4})/", "****", $card);
// ****-****-****-3456
?>
پرچمها (Flags)
| پرچم | توضیح |
|---|---|
i | بدون حساسیت به حروف بزرگ/کوچک |
m | چندخطی (^ و $ برای هر خط) |
u | پشتیبانی از UTF-8 (برای فارسی) |
الگوهای پرکاربرد
// ایمیل
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
// شماره موبایل ایران
/^09\d{9}$/
// کد پستی ایران
/^\d{10}$/
// URL
/^https?:\/\/.+$/
// فقط حروف فارسی
/^[\x{0600}-\x{06FF}\s]+$/u
?>
این مبحث بخشی از دوره آموزش کامل PHP است.