1. דף הבית
  2. קורסים אונליין
  3. קורס PHP אונליין
  4. מניפולציות מתקדמות במחרוזות ב-PHP

מניפולציות מתקדמות במחרוזות ב-PHP

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

הגדרת מחרוזות ב-PHP

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

ניתן להגדיר מחרוזות באמצעות מירכאות בודדות (') או מירכאות כפולות ("), כאשר לכל שיטה התנהגות שונה.

מחרוזת במירכאות בודדות - מתייחסת לטקסט כפי שהוא, ללא פיענוח מיוחד, למעט מספר מצומצם של Escape Sequences.

בעת שימוש במירכאות בודדות, ניתן לשלב את רצפי הבריחה (Escape Sequences) הבאים:

  • \\ - קו נטוי (back slash)
  • '\ - מרכאה בודדה

מחרוזת במירכאות כפולות - מפרשת תווים מיוחדים (כגון n\ לשורה חדשה או t\ לטאב) ומאפשרת אינטרפולציית משתנים.

כאשר משתמשים במירכאות כפולות, ניתן לשלב את רצפי הבריחה (Escape Sequences) הבאים:

  • n\ - שורה חדשה
  • t\ - טאב
  • \\ - קו נטוי (back slash)
  • "\ - מרכאות כפולות
  • $\ - סימן דולר

דוגמה:

<?php
// Single-quoted string
echo 'He said, \'Hello\'.\nThis is a backslash: \\';  
// Output: He said, 'Hello'.\nThis is a backslash: \ (no special parsing)

// Double-quoted string
echo "He said, \"Hello\".\nThis is a backslash: \\";  
// Output: He said, "Hello".
//         This is a backslash: \ (interprets new line and backslash)

// Double-quoted with variable interpolation
$single = 'Hello, World!';
$double = "Hello, $single";
echo $single; // Output: Hello, World!
echo $double; // Output: Hello, Hello, World!
?>

עבודה עם מחרוזות ארוכות

PHP מאפשרת עבודה עם מחרוזות מרובות שורות באמצעות מנגנוני Heredoc ו-Nowdoc.

מנגנון Heredoc מאפשר אינטרפולציה של משתנים, כמו מחרוזות עם מירכאות כפולות.

דוגמה:

<?php
$name = "PHP";
echo <<<EOD
This is a heredoc with $name.
EOD;
?>

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

דוגמה:

<?php
echo <<<'EOD'
This is a nowdoc example.
EOD;
?>

המחרוזת כמערך של תווים

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

דוגמה:

<?php
$text = "Hello, PHP!";
echo $text[0]; // Output: H
echo $text[5]; // Output: ,
?>

אורך מחרוזת

ניתן לקבוע את אורך המחרוזת באמצעות הפונקציה strlen.

דוגמה:

<?php
$text = "Hello, PHP!";
echo strlen($text); // Output: 11
?>

שרשור מחרוזות

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

דוגמה:

<?php
$firstName = 'John';
$lastName = 'Doe';
$fullName = $firstName . ' ' . $lastName;

echo $fullName; // Output: John Doe
?>

השוואת מחרוזות

PHP מציעה מספר דרכים להשוות מחרוזות.

הדרך הפשוטה ביותר היא באמצעות האופרטורים == או ===.

  • האופרטור == - אופרטור זה בודק שוויון ערכים. הוא אינו בודק את טיפוס המשתנים.
  • האופרטור === - אופרטור זה בודק זהות, כלומר, בדיקה גם של טיפוס המשתנים וגם של ערכם.

דוגמה:

<?php
$str1 = "123";
$str2 = 123;

// Comparison using ==
if ($str1 == $str2) {
    echo "'123' is equal to 123 with == operator\n";  // This will be printed
} else {
    echo "'123' is not equal to 123 with == operator\n";
}

// Comparison using ===
if ($str1 === $str2) {
    echo "'123' is identical to 123 with === operator\n";
} else {
    echo "'123' is not identical to 123 with === operator\n";  // This will be printed
}
?>

דרך נוספת להשוואת מחרוזות היא באמצעות הפונקציות strcmp ו-strcasecmp.

  • הפונקציה strcmp - משווה בין שתי מחרוזות מבחינה לקסיקוגרפית, כלומר, לפי סדר מילוני של האותיות בקוד ה-ASCII. היא מחזירה ערך קטן מ-0 אם המחרוזת הראשונה מופיעה לפני המחרוזת השניה מבחינה לקסיקוגרפית, ערך גדול מ-1 אם המחרוזת השניה מופיעה לפני המחרוזת הראשונה מבחינה לקסיקוגרפית או 0 אם המחרוזות שוות. הפונקציה היא case sensitive, כלומר, יש חשיבות לאותיות הרישיות במחרוזות.
  • הפונקציה strcasecmp - פונקציה זו דומה לפונקציה strcmp, כאשר השינוי היחיד הוא שאין בה חשיבות לאותיות רישיות.

דוגמה:

<?php
$str1 = "Apple";
$str2 = "apple";

$result = strcmp($str1, $str2);
echo $result;  // Output: <0 (because "A" has a lower ASCII value than "a")

$result = strcasecmp($str1, $str2);
echo $result;  // Output: 0 (strings are equal, ignoring case)


$str1 = "apple";
$str2 = "Banana";

$result = strcmp($str1, $str2);
echo $result;  // Output: >0 (because "Banana" is lexicographically less than "apple")

$result = strcasecmp($str1, $str2);
echo $result;  // Output: <0 (because "apple" is lexicographically less than "banana", ignoring case)
?>

מניפולציות מתקדמות במחרוזות

שפת PHP מספקת מגוון רחב של פונקציות המבצעות מניפולציות על מחרוזות. חלק מהפונקציות מטפלות במחרוזות-משנה (substrings) שהן חלק מתוך מחרוזת. לדוגמה: "is David" היא מחרוזת-משנה (substring) של המחרוזת "My name is David Adams".

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

נסקור להלן כמה מהפונקציות השימושיות לטיפול במחרוזות.

הפונקציה strpos

הפונקציה מחפשת מחרוזת-משנה בתוך מחרוזת נתונה ומחזירה את המיקום (האינדקס) של ההתרחשות הראשונה. הפונקציה מחזירה false אם מחרוזת-המשנה לא נמצאה.

דוגמה:

<?php
$str = "Hello, World!";
$pos = strpos($str, "World");
if ($pos !== false) {
    echo "Found at position: $pos";  // Output: Found at position: 7
}
?>

הפונקציה substr

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

דוגמה:

<?php
$str = "Hello, World!";
$sub = substr($str, 7, 5);  // Extracts 5 characters starting from position 7
echo $sub;  // Output: World
?>

הפונקציה str_replace

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

דוגמה:

<?php
$str = "Hello, World!";
$new_str = str_replace("World", "PHP", $str);
echo $new_str;  // Output: Hello, PHP!
?>

הפונקציה substr_replace

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

דוגמה:

<?php
$str = "Hello, World!";
$new_str = substr_replace($str, "PHP", 7, 5);
echo $new_str;  // Output: Hello, PHP!
?>

הפונקציה trim

הפונקציה מסירה תווי רווח לבן וסוף שורה משני הקצוות של מחרוזת. ניתן לקבוע הסרה של תווים אחר (אחד או יותר) במקום רווח.

דוגמה:

<?php
$str = "   Hello, World!   \n";
$trimmed_str = trim($str);
echo "Original string: '$str'";  // Output: '   Hello, World!   '
echo "Trimmed string: '$trimmed_str'";  // Output: 'Hello, World!'

$str = "!!!Hello, World!!!";
$trimmed_str = trim($str, "!");
echo "Original string: '$str'";  // Output: '!!!Hello, World!!!'
echo "Trimmed string: '$trimmed_str'";  // Output: 'Hello, World'

$str = "-=Hello, World!=-";
$trimmed_str = trim($str, "-=");
echo "Original string: '$str'";  // Output: '-=Hello, World!=-'
echo "Trimmed string: '$trimmed_str'";  // Output: 'Hello, World'
?>

הפונקציות strtolower ו-strtoupper

הפונקציה strtolower הופכת טקסט באנגלית לאותיות קטנות (a, b, c...). הפונקציה strtoupper הופכת טקסט באנגלית לאותיות רישיות (A, B, C...).

דוגמה:

<?php
$str = "Hello, World!";
echo strtolower($str);  // Output: hello, world!
echo strtoupper($str);  // Output: HELLO, WORLD!
?>

הפונקציות ucfirst, lcfirst, ucwords

הפונקציות ucfirst, lcfirst, ucwords מתקנות את האות הפותחת (האות הראשונה) של המילים במחרוזת באופן הבא:

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

הפונקציה lcfirst - הופכת את האות הראשונה במילה הראשונה במחרוזת לאות קטנה.

הפונקציה ucwords - הופכת את האות הראשונה בכל אחת מהמילים במחרוזת לאות רישית.

דוגמה:

<?php
$str = "hello, world!";
echo ucfirst($str);   // Output: Hello, world!
echo lcfirst($str);   // Output: hello, world!
echo ucwords($str);   // Output: Hello, World!
?>

הפונקציה str_repeat

הפונקציה משרשרת מחרוזת נתונה מספר פעמים נתון.

דוגמה:

<?php
$str = "PHP ";
echo str_repeat($str, 3);  // Output: PHP PHP PHP 
?>

הפונקציה strrev

הפונקציה הופכת את המחרוזת מהסוף להתחלה.

דוגמה:

<?php
$str = "Hello, World!";
echo strrev($str);  // Output: !dlroW ,olleH
?>

הפונקציה str_shuffle

הפונקציה מערבלת את האותיות במחרוזת בסדר אקראי.

דוגמה:

<?php
$str = "abcdef";
echo str_shuffle($str);  // Output: Random order of characters (e.g., "cbfaed")
?>
הוספת תגובה
אנו משתמשים בעוגיות על מנת לשפר את חווית המשתמש באתר. מדיניות הפרטיותאני מסכים