מודיפיקטורים (modifiers) משנים חוקים כלליים של ביטויים רגולריים (PCRE). כאשר כותבים ביטוי רגולרי, תוחמים אותה בין 2 סימני /
ואת המודיפיקטורים ניתן לציין בסוף הביטוי. למשל: בביטוי /Case-InSensitive/i
ה-i הוא מודיפיקטור שמציין למעשה case-insensitive. לכל מודיפיקטור יש קבוע שמוגדר ב-PHP ואות (case-sensitive) שמציינים אותה בביטוי. ניתן לכתוב כמה מודיפיקטורים ביחד.
קבוע |
אות |
הסבר |
PCRE_CASELESS |
i |
מודיפיקטור זה גורם לכך שאותיות בביטוי יתאימו גם לאותיות גדולות וגם לאותיות קטנות, ולא משנה אם בביטוי מופיע האות הגדולה או הקטנה. |
PCRE_MULTILINE |
m |
כברירת מחדל, הסימנים המיוחדים ^ ו-$ מתייחסים להתחלת וסוף המחרוזת. אם מודיפיקטור זה מצויין, אז סימנים אלו מתייחסים להתחלת וסוף כל שורה חדשה במחרוזת (מופרדים עם \n ). |
PCRE_DOTALL |
s |
כברירת מחדל, הסימן המיוחד . (נקודה) מתאים לכל תו בודד, פרט לשורה חדשה (\n ). אם מודיפיקטור זה מצויין, אז הסימן המיוחד . מתאים לכל תו בודד, כולל תו של שורה חדשה (\n ). |
PCRE_EXTENDED |
x |
מודיפיקטור זה מתעלם מתווים לבנים (רווחים) שהם לא "מוברחים" (עם הסימן \ ). לא מתעלם מתווים לבנים שנמצאים בתוך מחלקת תווים, גם אם לא "מוברחים". כברירת מחדל, לא ניתן לכתוב הערות בתוך ביטוי רגולרי. מודיפיקטור זה מאפשר גם כתיבת הערות בתוך ביטויים מסובכים בעזרת הסימן המיוחד # (לא ניתן לכתוב הערות בתוך מחלקת תווים). |
|
e |
מודיפיקטור זה בשימוש רק ב-PHP, בפונקציה preg_replace(). כאשר מודיפיקטור זה מצויין, אז את המחרוזת המחליפה מחשבים כקוד PHP, והפלט המוחזר מתחלף עם הביטוי. (ראה גם את הפונקציה eval()). |
PCRE_ANCHORED |
A |
מודיפיקטור זה מכריח את הביטוי להיות "מעוגן", כלומר החיפוש של הביטוי יחל רק מההתחלה של המחרוזת שבה אנו מחפשים התאמה. (ניתן ליצור ביטוי עם סימנים מיוחדים שיעשה בדיוק את אותו הדבר ללא מודיפיקטור זה). |
PCRE_DOLLAR_ENDONLY |
D |
מודיפיקטור זה גורם לסימן המיוחד $ להתאים רק לסוף האבסולוטי של המחרוזת (ולא גם לסופי שורות). אם המודיפיקטור m מצויין יחד איתו, אז מודיפיקטור זה לא משפיע. |
|
S |
מודיפיקטור זה "לומד" את הביטוי. כאשר מודיפיקטור זה מצויין, אז PHP מנסה "ללמוד" את הביטוי, כלומר PHP מבצעת אנליזה על הביטוי כדי להגביר את מהירות החיפוש של ההתאמות. מודיפיקטור זה טוב עבור ביטויים שיש בהם שימוש חוזר הרבה פעמים, אך לא כל-כך יעיל עבור ביטויים שהם "מעוגנים" (בתחילת המחרוזת) או עבור ביטויים שמתחילים עם אות קבועה. |
PCRE_UNGREEDY |
U |
בדר"כ הכמתים של PCRE הם "חמדנים", ולפעמים החמדנות הזו גורמת להתאמות לא רצויות. מודיפיקטור זה מונע מהכמתים להיות "חמדנים". למשל: ביטוי לחיפוש הערות ב-C /\/\*.*\*\// עבור המחרוזת "/*comment_1*/ no_comment /*comment_2*/" תמצא התאמה שהיא המחרוזת כולה (הכמת * הוא "חמדן"). אך אם נשתמש במודיפיקטור שמונע "חמדנות" באותו הביטוי /\/\*.*\*\//U , נקבל 2 התאמות עבור 2 ההערות. |
PCRE_EXTRA |
X |
מודיפיקטור זה מונע שימוש לא נכון ב-"הברחת" אותיות. אם כותבים צירוף עם תו ההברחה \ ואות, ואין לצירוף משמעות מיוחדת, אז הביטוי יוציא שגיאה. בדר"כ, כאשר לא משתמשים במודיפיקטור זה, צירוף ללא משמעות נחשב לאות עצמה. (מודיפיקטור זה לא משפיע על צירופים עם תווים מיוחדים שאין להם משמעות). |
PCRE_UTF8 |
u |
מודיפיקטור זה מתייחס למחרוזות כאילו הן בקידוד של UTF-8. זמין רק עבור PHP4.1.0 או יותר ב-Unix, ועבור PHP4.2.3 או יותר ב-Windows. |