אתה נמצא כאן יסודות השפה  >>  סוגי נתונים  >>  מחרוזות

מחרוזות

מחרוזת היא שרשרת של תווים. מחרוזת כותבים בדר"כ בין מרכאות רגילות (') או מרכאות כפולות ("). ההבדל ביניהם הוא שבמחרוזת שבין מרכאות רגילות PHP לא מתייחסת למשתנים ולתווים מיוחדים (פרט ל-\' ול-\\), ואילו במחרוזת שבין מרכאות כפולות PHP מתייחסת למשתנים ולתווים מיוחדים.

<?php
  $var='this is a variable';
  echo 'trying to echo a variable: \"$var\"'
/*זוהי מחרוזת בין מרכאות רגילות,
לכן PHP לא תתייחס לתווים המיוחדים ולמשתנים שנמצאים בה,
כמו, למשל, לתו \" ולמשתנה $var.
*/
;
  echo "<BR>echoing a variable: \"$var\""
/*זוהי מחרוזת בין מרכאות כפולות,
לכן PHP תתייחס לתווים מיוחדים ולמשתנים,
ונקבל כפלט את מה שאנו מצפים.
*/
;
?>

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

<?php
  $name="Danny";
  $age=20;
  echo 'Hi,'." my name is "
/*שרשור 2 סוגים של מחרוזות.*/
.$name." and I'm "
/*שרשור של מחרוזת ומשתנה.*/
.$age." years old."
/*שרשור של מחרוזת ומשתנה,
על-אף שהמשתנה הוא לא מסוג מחרוזת.
*/
;
?>

ניתן לגשת לכל תו בודד במחרוזת ע"י [] או {}. מספור התווים במחרוזת מתחיל מ-0.

<?php
  $str="abcde";
  echo "The 3rd character in the string \"".$str."\"
/*במקום הקטע המסומן ניתן היה לכתוב: \"$str\"
כי אנו משתמשים במחרוזת עם מרכאות כפולות.
*/
 is the letter '"
.$str[2]
/*מחזיר את האות השלישית במחרוזת $str
כי המספור מתחיל מ-0.
שווה-ערך ל-$str{2}.
*/
."'.";
?>

PHP יכולה להמיר מחרוזות למספרים בהתאם לשימוש שנעשה בהם. במקרה ו-PHP ממירה מחרוזת למספר אז היא הופכת אותו למספר ממשי אם המחרוזת מכילה . e או E, ולמספר שלם במקרה ותווים אלו לא מופיעים. מתוך המחרוזת היא הופכת למספר רק את הצירוף החוקי הראשון מתחילת המחרוזת, ואם המחרוזת לא מתחילה עם צירוף תווים שיוצרים מספר, אז ערכה של המחרוזת תהיה 0.

<?php
  $a=1+"10.5";
/*$a יהיה מסוג של מספר ממשי עם הערך 11.5
*/

  echo "\$a is of type <B>".gettype($a)."</B> and its value is <B>$a</B><BR>\n";
  
  $a=1+"10";
/*$a יהיה מסוג של מספר שלם עם הערך 11*/

  echo "\$a is of type <B>".gettype($a)."</B> and its value is <B>$a</B><BR>\n";
  
  $a=1+"cakes 10";
/*$a יהיה מסוג של מספר שלם עם הערך 1
ערכו של המחרוזת הוא 0, כי הוא לא מתחיל עם צירוף חוקי של מספר.
*/

  echo "\$a is of type <B>".gettype($a)."</B> and its value is <B>$a</B><BR>\n";
?>

כאשר ממירים ממערך למחרוזת, המחרוזת תכיל את המילה Array.
כאשר ממירים אובייקט למחרוזת, המחרוזת תכיל את המילה Object.


תגובות בנושא

למה זה בכלל טוב 05-12-02 06:01
 [ללא שם]
#155

למה צריך את כל זה...
זה סתם שטויות

זה אולי הכי חשוב 05-12-02 08:00
 אלי חן (מנהל)
#159

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

לא הבנתי אחד מהתווים? 06-12-02 11:00
 [ללא שם]
#250

למשל:
<?php
$str="abcde";
echo "\(לשם מה התו הזה? הוא לא מוצג בפלט?)

בקוד האחרון!? 06-12-02 12:02
 פיני
#251

למה בסוף כל קוד
echo
יש
n\???

תווים 06-12-02 16:01
 אלי חן (מנהל)
#259

כאשר משתמשים בתווים "" עבור מחרוזות, ורוצים להכניס למחרוזת את התו " אז כדי לא ליצור בלבול בקומפילציה יש להבריח את התו ולרשום "\ ואז כאשר מדפיסים את המחרוזת אז יודפס רק " בלי ה \

התו n\ מייצג ירידת שורה חדשה. כאשר מדפיסים n\ לפלט אז בקוד ה-HTML תהיה ירידת שורה (הפלט הבא יתחיל בשורה חדשה). יש להבדיל בין n\ שמוריד שורה בקוד ה-HTML, לבין <BR> שמוריד שורה בדף האינטרנט (בדפדפן).

קיים מצב בעייתי 07-12-02 21:00
 ישנו מצב בעייתי
#324

אם נגיד,כמו בפורום לדוגמא,כשמישהו כותב בהודעה טקסט כלשהו ובתוך הטקסט מופיעים הסימנים " ו- ' ואני רוצה בסה"כ רק להדפיס אותם מבלי שיווצר בעיה בקימפולציה ומבלי להשתמש בתווים \. אין אפשרות פשוט להדפיס את מה שיש במחרוזת מבלי שיווצר בילבול אפילו אם יש סימני " ו- ' ? (איך שפורומים עובדים)


תודה רבה.

לזה שמתחתי... 08-12-02 06:02
 אסף
#354

כי זה הבסיס!
זה לא שטויות זה חשוב!

בדוגמאת קוד השניה... 08-12-02 09:01
 asaf92
#370

בדוגמאת קוד שניה שמגדירים משתנים, אז למה את המספר לא הגדירו עם מרכאות ואת השם כן?

שרשור מספרים למחרוזות 08-12-02 09:02
 אלי חן (מנהל)
#371

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

\ שקול ל-/ ? 08-12-02 20:01
 [ללא שם]
#385

ב-PHP התו \ שווה ל-/?
זאת אומרת שאם אני אחליף בניהם אז התוצאה תהיה שווה

התו / לא שקול לתו \ 09-12-02 00:01
 אלי חן (מנהל)
#391

התווים הללו שונים! לתו \ יש משמעות קצת יותר מיוחדת בזה שהוא תו בריחה (escape character).

הכוונה שלך הייתה כנראה האם התווים האלה זהים בתוך נתיב של קובץ... ובכן, ווינדוס משתמשים בתו \ להפרדה בין ספריות, ואילו יוניקס משתמשים בתו / להפרדת ספריות. במנוע ה-PHP על מערכות ווינדוס ניתן להשים את שני התווים להפרדת ספריות בנתיב (לא ב-URL, ב-URL מתמשים רק ב-/).

מה אומר התו gettype 01-11-02 15:01
 גלעד
#556

שמתי לב ששמתם את התו gettype ולא הסברתם מהו אומר, תוכלו בבקשה להסביר לי

gettype 01-11-02 15:02
 אלי חן (מנהל)
#560

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

gettype 02-12-03 01:01
 Yarden
#692

אבל רשמת בפרקים הקודמים ש gettype בעצם פולט (לא יודע איך לומר) את הערך של המשתנה למסך לא?

כל הכבוד אחלה אתר לומדים פה הרבה!!!

ערך משתנה 02-12-03 01:01
 Yarden
#693

לא הבנתי איך יודעים מהו הערך של כל משתנה.. אני מחליט את הערך של המשתנה או שPHP היא זו שמחליטה מה יהיה הערך של המשתנה..?

תגובה: ערך משתנה 02-12-03 01:02
 אלי חן (מנהל)
#703

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

gettype 02-12-03 01:02
 אלי חן (מנהל)
#704

הפונקציה gettype *מחזירה* את סוג המשתנה, ולא *מדפיסה* את ערכו לפלט..

איך מגדירים?!? 31-10-03 11:02
 [ללא שם]
#1187

לא הבנתי איפה הגדרת אם זה יהיה בוליאן או מספר שלם או מחרוזת או כל דבר אחר...

איפה אתה מגדיר ??

auto-cast 31-10-03 17:01
 אלי חן (מנהל)
#1211

ב-PHP אין צורך להגדיר את סוג המשתנה, שכו PHP קובעת את הסוג בעצמה באופן אוטומטי. ניתן לכפות על PHP להשתמש בסוג משתנה מסוים באמצעות casting, כאשר רושמים את סוג המשתנה בסוגריים לפני המשתנה. למשל:
(int)$a

בשביל מה צריך את הנקודה האחרונה בשורה? 01-12-04 07:01
 רוני
#1372

echo "The 3rd character in the string "".$str.""is the letter '".$str[2]."'.";

-- 05-12-04 14:00
 סטס ארשנסקי
#1605

כדי לסגור את המחרוזת אבל להשאיר אותה פתוחה בשביל המשתנה, לפי מה שאני הבנתי

דוגמא מס 3 05-12-06 23:01
 יבגניה אלקינד
#2680

שלום, לא הבנתי למה משמשים ה" משני הצדדים של המשתנה פה- "".$str."".
תודה.

שאלה קטנה 02-11-06 06:00
 חן בן-הרוש
#2734

איך אני יכול להדפיס את המחרוזות בלי כל המרכאות?
נגיד:
יוצא לי ככה: Hi,my name is "Chen" "Ben Haroosh".
ה-Chen הוא משתנה וכך גם ה-Ben Haroosh.
אני רוצה שיצא ככה:
Hi,my name is Chen Ben Haroosh.
(נטול מרכאות)


לדף הקודםמספרים עם נקודה עשרונית -הקודם
לתחילת הדףלתחילת הדף
הבא- מערכיםלדף הבא