آموزش جامع عبارات باقاعده (Regex) در PHP - از مقدماتی تا پیشرفته
مقدمهای بر عبارات باقاعده (
عبارات باقاعده یا Regular Expressions که به اختصار Regex نامیده میشوند، یک ابزار قدرتمند برای کار با متن هستند. این ابزار به شما امکان میدهد تا الگوهای خاصی را در رشتههای متنی جستجو، جایگزین یا استخراج کنید.
در
چرا از Regex استفاده کنیم؟
- جستجوی پیشرفته: پیدا کردن الگوهای پیچیده در متن.
- اعتبارسنجی دادهها: مانند چک کردن ایمیل، شماره تلفن و غیره.
- تغییر متن: جایگزینی یا حذف بخشهای خاصی از متن.
- تجزیه متن: استخراج اطلاعات خاص از لاگها یا فایلهای متنی.
مزایای استفاده از Regex در PHP:
- سرعت بالا در پردازش متن
- انعطافپذیری فوقالعاده
- قابلیت استفاده در توابع مختلف
- پشتیبانی از یونیکد و کاراکترهای چندبایتی
معایب و محدودیتها:
- پیچیدگی درک الگوهای پیشرفته
- مشکلآفرین در صورت استفاده نادرست (مصرف منابع زیاد)
- نیاز به تست دقیق به دلیل رفتارهای غیرمنتظره در برخی الگوها
در ادامه، با مثالهای عملی از ساده تا پیشرفته،
مثالهای Regex در PHP
۱- جستجوی ساده با
توضیح:
- الگوی
-
۲- استفاده از کاراکترهای ویژه (Metacharacters)
توضیح:
-
-
۳- اعتبارسنجی ایمیل
توضیح:
-
-
-
-
۴- جایگزینی متن با
توضیح:
-
-
۵- تجزیه متن با
توضیح:
-
۶- مثال پیشرفته: استخراج لینکهای HTML
توضیح:
-
-
نتیجهگیری
عبارات باقاعده (Regex) یک ابزار قدرتمند برای پردازش متن در PHP هستند. با یادگیری این ابزار، میتوانید عملیات پیچیده روی رشتهها را به راحتی انجام دهید. در این مقاله، از مباحث پایه تا مثالهای پیشرفته را بررسی کردیم. حالا شما میتوانید از Regex در پروژههای خود استفاده کنید!
Regex)
عبارات باقاعده یا Regular Expressions که به اختصار Regex نامیده میشوند، یک ابزار قدرتمند برای کار با متن هستند. این ابزار به شما امکان میدهد تا الگوهای خاصی را در رشتههای متنی جستجو، جایگزین یا استخراج کنید.
Regex در بسیاری از زبانهای برنامهنویسی از جمله PHP پشتیبانی میشود و در پردازش متن، اعتبارسنجی فرمها، تجزیه لاگها و بسیاری از موارد دیگر کاربرد دارد.
در
PHP، توابعی مانند preg_match(), preg_replace(), و preg_split() برای کار با Regex استفاده میشوند. این توابع از PCRE (Perl Compatible Regular Expressions) پشتیبانی میکنند که یک کتابخانه بسیار قوی برای پردازش عبارات باقاعده است.
چرا از Regex استفاده کنیم؟
- جستجوی پیشرفته: پیدا کردن الگوهای پیچیده در متن.
- اعتبارسنجی دادهها: مانند چک کردن ایمیل، شماره تلفن و غیره.
- تغییر متن: جایگزینی یا حذف بخشهای خاصی از متن.
- تجزیه متن: استخراج اطلاعات خاص از لاگها یا فایلهای متنی.
مزایای استفاده از Regex در PHP:
- سرعت بالا در پردازش متن
- انعطافپذیری فوقالعاده
- قابلیت استفاده در توابع مختلف
PHP مانند preg_match, preg_replace
- پشتیبانی از یونیکد و کاراکترهای چندبایتی
معایب و محدودیتها:
- پیچیدگی درک الگوهای پیشرفته
- مشکلآفرین در صورت استفاده نادرست (مصرف منابع زیاد)
- نیاز به تست دقیق به دلیل رفتارهای غیرمنتظره در برخی الگوها
در ادامه، با مثالهای عملی از ساده تا پیشرفته،
Regex را در PHP بررسی خواهیم کرد.
مثالهای Regex در PHP
۱- جستجوی ساده با preg_match()
$text = "Hello, World!";
$pattern = "/World/";
if ( preg_match ( $pattern, $text ) ) {
echo "Match found!";
} else {
echo "No match found.";
}
// Output: Match found!
- الگوی
"/World/" به دنبال کلمه World در متن میگردد.
-
preg_match() در صورت پیدا کردن الگو، true برمیگرداند.
۲- استفاده از کاراکترهای ویژه (Metacharacters)
$text = "The price is 100 dollars.";
$pattern = "/\d /"; // \d matches any digit
if ( preg_match ( $pattern, $text, $matches ) ) {
echo "Found number: " . $matches[0];
}
// Output: Found number: 100
-
\d هر رقم (۰-۹) را تطبیق میکند.
-
به معنی یک یا چند تکرار از کاراکتر قبلی است.
۳- اعتبارسنجی ایمیل
$email = "test@example.com";
$pattern = "/^[a-zA-Z0-9._% -] @[a-zA-Z0-9.-] \.[a-zA-Z]{2,}$/";
if ( preg_match ( $pattern, $email ) ) {
echo "Valid email!";
} else {
echo "Invalid email!";
}
// Output: Valid email!
-
^ و $ نشاندهنده شروع و پایان رشته هستند.
-
[a-zA-Z0-9._% -] بخش قبل از @ را چک میکند.
-
@[a-zA-Z0-9.-] دامنه ایمیل را بررسی میکند.
-
\.[a-zA-Z]{2,}$ پسوند دامنه (مثل .com) را اعتبارسنجی میکند.
۴- جایگزینی متن با preg_replace()
$text = "Today is 2023-10-05";
$pattern = "/(\d{4})-(\d{2})-(\d{2})/";
$replacement = "$3/$2/$1"; // Changes YYYY-MM-DD to DD/MM/YYYY
echo preg_replace ( $pattern, $replacement, $text );
// Output: Today is 05/10/2023
-
(\d{4}) سال با ۴ رقم را میگیرد و در گروه ۱ ذخیره میکند.
-
$3/$2/$1 ترتیب تاریخ را تغییر میدهد.
۵- تجزیه متن با preg_split()
$text = "Apple,Banana,Orange,Mango";
$pattern = "/,/";
$fruits = preg_split ( $pattern, $text );
print_r($fruits);
/* Output:
Array
(
[0] => Apple
[1] => Banana
[2] => Orange
[3] => Mango
)
*/
-
preg_split() متن را بر اساس جداکننده , تقسیم میکند.
۶- مثال پیشرفته: استخراج لینکهای HTML
<?php
$html = '<a href="https://example.com">Example</a> <a href="https://google.com">Google</a>';
$pattern = '/<a\s href="\'["\']/i';
preg_match_all ( $pattern, $html, $matches );
print_r ( $matches[1] );
/* Output:
Array
(
[0] => https://example.com
[1] => https://google.com
)
*/
?>
-
<a\s href= تگ <a> و ویژگی href را پیدا میکند.
-
(["\'][^"\'] ["\']) مقدار href را استخراج میکند.
نظرات