شمارنده‌های تکرار (Repetition Quantifiers)

اگر بخواهید عملیات تطبیق را با بیشتر از یک کاراکتر انجام بدهید، چکار می‌کنید؟ برای مثال فرض کنید می‌خواهید عملیات تطبیق را با کلماتی که شامل یک یا تعداد بیشتری از کاراکتر p هستند انجام بدهید یا اینکه می خواهید تطبیق را با کلماتی که حداقل دارای دو کاراکتر p هستند، انجام بدهید، اینجاست که شمارنده‌ها به کمک شما می آیند! شمارنده‌ها این امکان را به ما می‌دهند تا مشخص کنیم هر کاراکتر از عبارت با قاعده با چند کاراکتر از متن تطبیق کند. در زیر یک لیست از شمارنده‌ها را به شما معرفی می‌کنیم :

شمارنده توضیحات
+p با تعداد یک یا بیشتر از کاراکتر p تطبیق می‌کند.
*p با تعداد صفر یا بیشتر از کاراکتر p تطبیق می‌کند.
?p با تعداد صفر یا یک کاراکتر p تطبیق می‌کند.
p{2} با تعداد دقیقاً 2 تکرار از کاراکتر p تطبیق می‌کند.
p{2,3} با تعداد 2 تا 3 تکرار از کاراکتر p تطبیق می‌کند.
p{2,} با تعداد 2 یا بیشتر از 2 تکرار از کاراکتر p تطبیق می‌کند.
p{,3} با تعداد کمتر از 3 تکرار از کاراکتر p تطبیق می‌کند.

برای درک عملکرد شمارنده ها به کد زیر توجه کنید :

<?php
    $pattern = "/0+/";
    $text = "10, 100, 1000, 10000, 100000.";
    $replacement = "<b>$0</b>";
    
    echo preg_replace($pattern, $replacement, $text);    
?>

در کد بالا، الگوی /+0/، اگر یک 0 یا تعداد بیشتری 0 را پیدا کند، در دو طرف آنها تگ <b> قرار می دهد. خروجی آن به صورت زیر است:

بهتر است که سورس صفحه را هم برای درک بهتر مشاهده کنید :

توصیه می کنیم که برای درک الگوهای بعدی با هر بار اجرای کد سورس صفحه را هم مشاهده کنید. الگوی زیر اعداد 0 که دو به دو کنار هم هستند را پیدا می کند:

$pattern = "/0{2}/";

در الگوی زیر، اعدادی که با عدد 100 شروع می شوند، پیدا می شوند:

$pattern = "/10{2}/";

البته در اصل می توان گفت که عدد 2 در کد بالا به تعداد صفرها اشاره می کند. بقیه شمارنده ها نکته خاصی ندارند و می توانید با جایگزین کردن هر کدام در کد بالا، عملکرد آنها را متوجه شوید.