Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

พิมพ์ Newline ใน PHP ด้วย Single Quotes

ใน PHP Single-quoted string ('...') ไม่ Parse Escape Sequence เช่น \n, \t ต้องใช้วิธีอื่น

วิธีที่ 1: ใช้ Double Quotes (ง่ายที่สุด)

echo "Line 1\nLine 2\nLine 3"; // ทำงานได้ปกติ

วิธีที่ 2: Concatenation กับ Double-quoted Newline

$str = 'Line 1' . "\n" . 'Line 2' . "\n" . 'Line 3';
echo $str;

วิธีที่ 3: ใช้ Constant PHP_EOL (Cross-platform)

// PHP_EOL = \n (Linux/Mac), \r\n (Windows)
echo 'Line 1' . PHP_EOL . 'Line 2' . PHP_EOL . 'Line 3';

// เหมาะสำหรับ CLI Script และ Log File

วิธีที่ 4: ใช้ Heredoc / Nowdoc (หลายบรรทัด)

// Heredoc - Parse Variable (เหมือน Double Quotes)
$name = 'World';
echo <<

กรณี CLI vs Web Browser

function getNewline() {
    // CLI: ใช้ PHP_EOL
    // Web: ใช้ 
หรือ \n (ใน HTML Source) return (PHP_SAPI === 'cli') ? PHP_EOL : '
'; } echo 'Line 1' . getNewline() . 'Line 2';

ตัวอย่างจากคำถามเดิม (แก้ไขแล้ว)

 จริง newline
$var3 = 'hello';

echo $var1 . $var2 . $var3; // hi (newline) hello
echo PHP_EOL;               // Newline ตาม Platform

// str_replace ไม่ต้องใช้กับ \n ใน Double quotes แล้ว
// $var2 = str_replace("\n", '\n', $var2); // ผิด: ทำให้กลายเป็น literal \n

echo $var1 . $var2 . $var3; // hi (newline) hello
echo PHP_EOL;?>

สรุป: เลือกใช้ตัวไหน?

สถานการณ์แนะนำ
String ธรรมดา ต้องการ NewlineDouble quotes "\n"
CLI Script / Log FilePHP_EOL
HTML Output<br> หรือ CSS white-space: pre-line
String หลายบรรทัด มี VariableHeredoc <<<EOT
String หลายบรรทัด ไม่มี VariableNowdoc <<<'EOT'