Menu

PHP echo: הדפסת טקסט, משתנים ו-HTML

echo מדפיסה מחרוזת אחת או יותר: echo "Hello, $name"; או echo $a, $b;. זו הדרך הרגילה לשלוח טקסט או HTML לדף. print עושה אותו דבר עם ערך אחד ומחזירה 1; <?= $x ?> היא הצורה המקוצרת בתוך HTML.

בדף הזה יש עורכים שאפשר להריץ - לערוך, להריץ ולראות את הפלט מיד.

echo מדפיסה טקסט. כתבו echo "Hello"; כדי להדפיס מחרוזת, echo "Hello, $name"; כדי לכלול משתנה, ו-echo $a, $b; כדי להדפיס כמה ערכים ברצף. כל מה ש-echo מדפיסה הופך לדף שהדפדפן מציג, או לטקסט שאתם רואים בטרמינל.

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

הדפסת HTML עם echo

בדף אינטרנט, echo מדפיסה בדרך כלל HTML. הדפדפן מקבל את הטקסט ומציג את התגיות. לחצו על Run והלשונית Page תציג את התוצאה:

השורה האחרונה משתמשת בגרשיים בודדים, כך שהמירכאות הכפולות של class="note" לא צריכות בריחה. בתוך גרשיים בודדים משתנים לא מוחלפים, אז השתמשו בהם לטקסט קבוע. אם ערך מגיע ממבקר (טופס, כתובת URL), הדפיסו אותו דרך htmlspecialchars כדי שלא יוכל להזריק HTML; ראו את עמוד htmlspecialchars.

תגית ה-echo המקוצרת <?=

בתוך קובץ HTML, <?= $value ?> היא הצורה המקוצרת של <?php echo $value; ?>. היא שומרת על תבניות קריאות:

תגית ה-echo המקוצרת זמינה תמיד. התגית המקוצרת האחרת, <? בלי php, תלויה בהגדרה ואין להשתמש בה.

הדפסת כמה ערכים וירידת שורה

echo לא מוסיפה ירידת שורה. בטרמינל, הוסיפו "\n" (במירכאות כפולות) או את הקבוע PHP_EOL. ב-HTML, ירידת שורה בקוד המקור לא עושה שום דבר נראה לעין; השתמשו ב-<br> או באלמנטים נפרדים.

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

echo מול print

print היא האחות הוותיקה. היא מדפיסה ערך אחד ותמיד מחזירה 1, וזה מאפשר לה להופיע בתוך ביטוי. echo מקבלת כל מספר של ערכים ולא מחזירה כלום.

echoprint
ערכיםאחד או יותר, מופרדים בפסיקיםאחד בדיוק
ערך מוחזרכלום (זו פקודה)1
שימוש בתוך ביטוילאכן, $ok = print "x";
שימוש נפוץכמעט הכוללעיתים רחוקות

printf שונה שוב: היא מעצבת ערכים עם מצייני מקום, כמו printf("%05.2f", 3.14159), ומוסברת בעמוד sprintf.

הדפסת מערך או אובייקט עם echo

echo מדפיסה רק מחרוזות וערכים שמומרים למחרוזות (מספרים, בוליאנים, null). מערך לא מומר. ה-PHP שלכם תדפיס אזהרה ואת המילה Array:

PHP Warning:  Array to string conversion in /home/index.php on line 3
Array

כדי להציג את התוכן, בחרו את הפונקציה המתאימה:

אובייקט מחמיר יותר: אלא אם המחלקה שלו מגדירה __toString(), echo $object; עוצרת את הסקריפט עם Error: Object of class User could not be converted to string. גם בוליאנים מפתיעים לעיתים קרובות: echo true; מדפיסה 1 ו-echo false; לא מדפיסה כלום. השתמשו ב-var_dump($value) כשצריך לראות את הטיפוס והערך המדויקים.

טעות נפוצה: echo עם סוגריים ופסיקים

כי echo נראית כמו פונקציה, אנשים כותבים echo("a", "b");. זו שגיאת תחביר, כי הסוגריים עוטפים ביטוי יחיד:

PHP Parse error:  syntax error, unexpected token "," in /home/index.php on line 2

הסירו את הסוגריים (echo "a", "b";) או חברו את הערכים (echo("a" . "b");). אותו דבר חל על print, שאף פעם לא מקבלת ערך שני, עם סוגריים או בלעדיהם.

שאלות נפוצות

מה ההבדל בין echo ל-print ב-PHP?

שתיהן מדפיסות מחרוזות. echo מקבלת כמה ערכים מופרדים בפסיקים (echo $a, $b;) ולא מחזירה כלום; print מקבלת ערך אחד בדיוק ומחזירה 1, כך שאפשר להשתמש בה בתוך ביטוי. בפועל משתמשים ב-echo כמעט בכל מקום.

האם צריך סוגריים עם echo?

לא. echo היא מבנה שפה ולא פונקציה, ולכן echo "Hi"; היא הצורה הרגילה. echo("Hi"); עובדת כי הסוגריים רק מקבצים ביטוי אחד, אבל echo("a", "b"); היא שגיאת תחביר.

למה echo false לא מדפיסה כלום?

echo ממירה את הערך שלה למחרוזת, ו-false הופך למחרוזת הריקה "" בעוד true הופך ל-"1". כדי לראות את הערך הבוליאני עצמו, השתמשו ב-var_dump($x); (מדפיסה bool(false)) או ב-echo var_export($x, true); (מדפיסה false).

מה המשמעות של <?= ב-PHP?

<?= $value ?> היא תגית ה-echo המקוצרת, זהה ל-<?php echo $value; ?>. היא זמינה תמיד מאז PHP 5.4 והיא הדרך הרגילה להדפיס ערכים בתוך תבניות HTML.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל