נגישות       נגישות
שינוי גודל טקסט:
א א א
שינוי צבעי האתר:
? מקשי קיצור:

לחיצה חוזרת ונשנית על המקש Tab תעביר אתכם בין הקישורים והאזורים השונים בעמוד.

הפעלת מקשי הקיצור תלויה בדפדפן שבו אתם משתמשים.

Internet Explorer, Chrome ובגרסאות ישנות של Firefox: לחצו על מקש Alt ועל מקש המספר או האות על-פי הרשימה. ב Firefox 3 ומעלה: לחצו על המקשים Alt + Shift + המספר או האות.

S - עבור לתוכן הדף
L - חיפוש
1- עמוד הבית
2 - פרוייקטים
3 - מדריכים
4 - אודות
5 - צרו קשר
6 - הצהרת נגישות
 

פונקציות מחרוזת של PHP

מחבר:
בתאריך:

שפת ה-PHP מכילה שפע של פונקציות מובנות שתפקידן לטפל בטקסטים, כראוי לשפה המובילה ברשת האינטרנט. פונקציות אילה הן פונקציות המחרוזת. ב-PHP קיימות כ-100 פונקציות מחרוזת, ובמדריך זה אציג כמה מהן ואשתדל להסביר את עקרון השימוש בפונקציות אילה.

 

הפונקציות strlen ו- mb_strlen

הפונקציה strlen מחזירה את אורך המחרוזת כולל רווחים. לדוגמה:

$str = 'a string';
echo strlen($str);

התוצאה של זה 8, מפני שהפונקציה סופרת את כל התווים כולל הרווחים.

אם ננסה להשתמש בפונקציה זו על מחרוזת בעברית, סביר להניח שנקבל תוצאה משובשת בגלל שיטת הקידוד, ולכן נשתמש עבור מחרוזות בעברית במקבילה: mb_strlen. בוא נראה דוגמה:

$str = 'מחרוזת בעברית';
echo mb_strlen($str, 'utf-8');

שימו לב שאנו מעבירים לפונקציה mb_strlen נוסף למחרוזת גם את שיטת הקידוד, ובמקרה זה שיטת הקידוד היא utf-8 שמתייחסת לכל תו בעברית כתו בודד. באופן כללי, עדיף להשתמש בפונקציות ממשפחת "mb_" אם המחרוזות עשויות להיות בעברית או בשפות אחרות שמכילות תווים שאינם סטנדרטיים דוגמת רוסית או ערבית.

 

הפונקציות strstr ו- stristr

הפונקציה strstr מחפשת מחרוזת א' בתוך מחרוזת ב', ואחרי שנמצאת ההתאמה מחזירה את שארית מחרוזת ב'. בדוגמה הבאה, הפונקציה מחפשת את המילה String, ומחזירה את שארית המחרוזת:

$tutorial  = 'PHP Tutorial | String functions ';
echo $headline = strstr($tutorial, ' String ');

והתוצאה היא הבאה:

String functions

חשוב לדעת שהפונקציה strstr יודעת להבחין בין אותיות גדולות וקטנות. זה עלול ליצור לנו בעיה מפני שאנחנו לא בהכרח יודעים האם המחרוזת כתובה באותיות קטנות או גדולות (לדוגמה, כשאנחנו מקבלים מחרוזות שהזינו הגולשים). כאן באה לעזרתנו הפונקציה stristr שאינה מבחינה בין אותיות קטנות וגדולות. נשכתב את הדוגמה:

$tutorial  = 'PHP Tutorial | String functions ';
echo $headline = stristr($tutorial, 'STRING');

למרות שהקריטריון להפרדה הוא STRING, עדיין נקבל את התוצאה הרצויה לנו. כך זה ייראה:

String functions

באופן כללי, פונקציות רבות שכוללות את i בתוכן אינן רגישות לגודל האותיות (case insensitive).

 

כיצד למצוא האם מחרוזת נמצאת בתוך מחרוזת אחרת?

אפשר להשתמש בפונקציה strpos כדי לבדוק האם מחרוזת אחת נמצאת בתוך מחרוזת אחרת.

בדוגמה הבאה, אנחנו בודקים האם המחרוזת "you" קיימת בתוך המחרוזת "Where are you?"

$a = 'Where are you?';

if (strpos($a, 'you') !== false) {
    echo 'true';
}

השימוש ב-false הוא מכוון מפני ש-strpos מחזיר false במקרה של העדר התאמה, ואת מיקום התו הראשון של ההתאמה במקרה שהוא מוצא את המחרוזת.

 

הפונקציה str_replace

הפונקציה str_replace יודעת להחליף מחרוזת אחת במחרוזת אחרת. בדוגמה הבאה, מוחלף $ ב-#.

$langs = "HTML $ JavaScript $ PHP";
echo $langs_replace = str_replace("$", " #", $langs);

וכך נראית המחרוזת אחרי ההחלפה:

HTML # JavaScript # PHP

 

הפונקציה str_ireplace עושה את אותה פעולה כמו str_replace אבל אינה מבחינה בין אותיות קטנות וגדולות.

 

הפונקציות strops ו-strrpos

הפונקציה strops מחזירה את מיקום התו הרצוי הראשון במחרוזת. בדוגמה המצורפת אנחנו מחפשים את התו @ במחרוזת 'contact@reshetech.co.il'.

$email = 'contact@reshetech.co.il';
$search_for   = '@';
echo $position = strpos($email, $search_for);

דוגמת הקוד הזו תחזיר: 7 מפני ש-@ הוא התו השמיני במחרוזת, ומחשבים מתחילים לספור מאפס.

 

אם אנחנו רוצים את מיקום התו האחרון הרצוי לנו במחרוזת נשתמש ב-strrpos. בדוגמה המצורפת אנחנו מעוניינים במיקומה של הנקודה האחרונה במחרוזת.

$string = "str1.str2.str3.str4";
echo $position = strrpos($string, '.');

התשובה שתחזור 13 לפי מיקום הנקודה האחרונה במחרוזת.

באופן כללי הפונקציות ש-r (קיצור של reverse) התווסף לשמן מחזירות תשובות מהסוף.

 

הפונקציה substr

הפונקציה substr מחזירה תת מחרוזת לפי מיקום התו (מתחילים לספור מאפס) ואורך המחרוזת.

אם אנחנו רוצים את תת-המחרוזת שאורכה שלושה תווים והיא מתחילה מהתו הראשון, ננסח זאת כך:

echo substr('012345', 0, 3);

והתוצאה: 012

 אם אנחנו רוצים את כל התווים במחרוזת מלבד התו הראשון, כך עושים זאת.

echo substr('012345', 1);    

והתוצאה כוללת את כל המחרוזת מלבד התו הראשון: 12345.

ובאופן דומה, אם אנחנו רוצים תת-מחרוזת שמתחילה בתו שני ואורכה שלושה תווים, נכתוב זאת כך:

echo substr('012345', 1, 3); 

והתוצאה בהתאם: 123

 

דוגמה מעשית: הפרדת ההרחבה (extension) משם הקובץ

ההרחבה (extension) בדרך כלל מעידה על סוג הקובץ. לדוגמה, png, jpeg ו-jpg  לתמונות או txt לקבצי טקסט. רצוי לדעת מהי ההרחבה כשגולשים מעלים קבצים לאתר. כדי לברר את ההרחבה שעמה עלה הקובץ לשרת, נצטרך להשתמש בשילוב של מספר פונקציות ביחד.

משתנה $file מכיל את שם הקובץ:

$file = "filename.1.TXT";

נברר את מיקומה של הנקודה האחרונה במחרוזת בעזרת strrpos:

$pos = strrpos($file, '.'); // 10

substr יחזיר את כל מה שמימין לנקודה, כולל הנקודה. לכן, נוסיף ל-$pos אחד כדי שתת-המחרוזת תכלול רק את ההרחבה, ללא הנקודה.

$extension = substr($file, $pos+1); // TXT

במידה ונרצה את המחרוזת באותיות קטנות בלבד נוכל להשתמש בפונקציית מחרוזת נוספת strtolower שהופכת אותיות גדולות לקטנות.

$lwr_ext = strtolower($extension); // txt

והתוצאה היא txt לפי ההרחבה של הקובץ.

 

אפשר לכתוב את אותו קוד בצורה קומפקטית בהרבה אם משתמשים בתכונה של PHP שהוא יודע לשרשר פונקציות (לחבר פונקציות אחת לשנייה כמו בשרשרת). כך כותבים את הקוד בצורה קומפקטית, כשמשרשרים את הפונקציות זו לזו:

echo $ext = strtolower(substr($file, strrpos($file, '.')+1));

השרשור מתאפשר מפני ש-PHP  קורא מהפונקציה הפנימית ביותר לחיצונית ביותר.

במדריך הבא תוכלו ללמוד על הפונקציות implode ו-explode שהופכות מחרוזות למערכים והפוך.

לכל מדריכי ה-PHP

 

הוסף תגובה חדשה

 

= 3 + 4