escape الگو (preg_quote)
وقتی کاراکترهای خاص داری، با «escape الگو (preg_quote)» آن ها را امن کن. این تابع جلوی خراب شدن الگوی جستجو را می گیرد. مثل گذاشتن روکش روی دندان حساس.
تعریف و کاربرد escape الگو
preg_quote() قبل از کاراکترهای خاص regex بک اسلش می گذارد. پس رشته معمولی، در الگو معنای ویژه نمی گیرد. برای ورودی کاربر خیلی ضروری است.
نگارش و پارامترها
نگارش: preg_quote(input, delimiter). «input» رشته ورودی است. «delimiter» جداکننده الگو است. اگر بدهی، همان جداکننده هم escape می شود.
مثال ساده: تشخیص وجود الگوی امن
<?php
$search = preg_quote("://", "/");
$input = "https://www.w3schools.com/";
$pattern = "/" . $search . "/";
if (preg_match($pattern, $input)) {
echo "The input is a URL.";
} else {
echo "The input is not a URL.";
}
?>
مثال پیشرفته: استفاده از delimiter سفارشی
گاهی از # به عنوان جداکننده استفاده می کنی. پس باید آن را هم escape کنی.
<?php
$userInput = "price(10-20)#best";
$safe = preg_quote($userInput, "#");
$pattern = "#^" . $safe . "$#";
$ok = preg_match($pattern, $userInput);
var_dump($ok);
?>
نکات مهم درباره escape الگو
نکته: از escape الگو قبل از ساخت الگو استفاده کن.
نکته: اگر فقط می خواهی برش بزنی، preg_split ساده تر است.
نکته: برای جستجو یا جایگزینی، preg_match و preg_replace را ببین.
هشدار: ورودی خام کاربر را هرگز مستقیم در regex نگذار. همیشه escape کن.
جمع بندی سریع
- preg_quote کاراکترهای خاص را امن می کند.
- پارامتر delimiter را فراموش نکن.
- برای ورودی کاربر حیاتی است.
- با preg_match و preg_replace عالی ترکیب می شود.