60 likes | 298 Views
קורס PHP. preg_replace_callback. preg_replace. preg_match. regex. ביטויים רגולריים משמשים אותנו על-מנת לבצע מניפולציות שונות על סטרינגים ולבצע עליהם ניתוחים שונים. קיימים מספר סוגי Syntax שונים, כאשר אנו נעבוד עם PCRE (= Perl Compatible Regular Expressions ). לתווים שונים משמעות שונה:
E N D
קורס PHP preg_replace_callback preg_replace preg_match regex ביטויים רגולריים משמשים אותנו על-מנת לבצע מניפולציות שונות על סטרינגים ולבצע עליהם ניתוחים שונים. קיימים מספר סוגי Syntax שונים, כאשר אנו נעבוד עם PCRE (=Perl Compatible Regular Expressions). לתווים שונים משמעות שונה: ^ - תחילת מחרוזת$ - סוף מחרוזת. – כל תו פרט ל-\n כאשר נרצה להשתמש למשל בתו שמור דוגמת ה-^ בכל זאת, נצטרך "להבריח" אותו באמצעות תו הבריחה "\". ניתן להשתמש בו על-מנת להבריח ביטויים שונים: \d – ספרה\w – אות\r – חזרה לשורה חדשה\n – ירידת שורה\t – טאב\s - רווח שימו לב! ירידת שורה במערכות יוניקס היא “\n”, במקינטוש היא “\r” ובחלונות “\r\n”. \D – כל תו שאינו סיפרה\W – כל תו שאינו אות\S – כל תו שאינו רווח
קורס PHP preg_replace_callback preg_replace preg_match regex כאשר נרצה שתו מסויים יחזור מספר פעמים נוכל להשתמש ב{}, כאשר הם מקבלים {min,max}.לדוגמה הביטוי הבא: /\.{1,3}/ יחזיר TRUE על “.” או “..” או “…”. ניתן גם רק להזין ערך אחד על-מנת שיוחזר TRUE רק על מספר פעמים שאותו ביטוי חוזר. כאשר אנו מדברים במונחים של אינסוף ולא יודעים כמה תו למשל חוזר אם בכלל נוכל להשתמש בביטויים הבאים: * - לא בכלל או אינסוף, כמו {0,}+ - פעם אחת ומעלה, כמו {1,}? – בכלל לא או פעם אחת, כמו {0,1} אם נרצה להשתמש בזה על ביטוי מסויים המורכב ממספר תווים נוכל ליצור תת-תבנית באמצעות השימוש בסוגריים רגילים. למשל /(cat){1,2}/ יחזיר TRUE על “cat” ועל “catcat”. ניתן גם להשתמש ב-"|" לצורך OR. לדוגמה: /(car|dog)/ יחזור TRUE על "cat" ועל “dog” אם נרצה תו מסויים מתוך מחלקה ספציפית שיכיל למשל רק סיפרה בין 1 ל-5 או אות בעברית נשתמש בסוגריים מרובעים: [א-ת1-5]. שימו לב שאם תשתמשו בתו “^” בתוך מחלקת תווים הוא יקבל משמעות NOT.
קורס PHP preg_replace_callback preg_replace preg_match regex int preg_match ( string pattern, string subject [, array &matches [, int flags [, int offset]]] ) ועכשיו קצת תכל'ס... if (preg_match(“/^[א-ת\s]+$/”,”בלה בלה")) echo“הסטרינג שהוזן מכיל רק אותיות עבריות ורווחים”; אם נזין פרמטר שלישי נקבל לתוך המערך שנבחר בתא 0 את כל הביטוי שנקלט ולאחריו נתחיל בקבלת כל הביטויים שקלטנו במחלקות לפי סדר הופעתן בביטוי. preg_match(“/(\d+)(\w)/”,”255x”,$matches)echo$matches[0];//prints “255x”echo$matches[1];//prints “255”
קורס PHP preg_replace_callback preg_replace preg_match regex int preg_match_all ( string pattern, string subject, array &matches [, int flags [, int offset]] ) הפונקציה המתקדמת יותר לpreg_match()היא preg_match_all() המאפשרת לנו לקלוט מספר דפוסים אותם היא תשים במטריצה. preg_match_all(“/([א-ת]+)/”,”מייקרוסופט חרא”,$matches)echo$matches[0];//prints “מייקרוסופט”echo$matches[1];//prints “חרא”
קורס PHP preg_replace_callback preg_replace preg_match regex mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] ) כאשר אנו רוצים להחליף דפוס מסויים באחר נוכל להשתמש בפונקציה preg_replace(). $str = preg_replace(“/([א-ת]+)/”,"<b>\\1</b>”,”מייקרוסופט חרא”)echo$str;//prints “<b>מייקרוסופט</b> <b>חרא</b>” כל הביטוי נקלט ל\\0, הדבר הראשון שנקלט \\1, השני ל\\2 וכך הלאה...
קורס PHP preg_replace_callback preg_replace preg_match regex mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit [, int &count]] ) אם אנו לא מעוניינים רק להחליף ביטוי בביטוי אחר, אלא קודם לבצע עליו מספר דברים ו/או לבדוק אותו תוכלו להשתמש בcallback הקיים בפונקציה preg_replace_callback()כדי להעביר את מה שהתקבל אליה. function callback($matches){if ($matches[1][0]!=“/”)return $matches[1].” style=\”color: green\” “;elsereturn $matches[1];} $str = preg_replace_callback(“/<(.+?)>/”,"callback”,”<span>coool</span>”)echo$str;//prints “<span style=“color: green”>coool</span>”