Cetak baris baru dalam PHP dengan tanda kutip tunggal

125

Saya mencoba menggunakan tanda kutip tunggal sebanyak mungkin dan saya perhatikan bahwa saya tidak dapat menggunakan \ n dalam tanda kutip tunggal. Saya tahu saya bisa memasukkan baris baru secara harfiah dengan menekan return, tetapi itu mengacaukan lekukan kode saya.

Apakah ada karakter ASCII atau sesuatu yang bisa saya ketik yang akan menghasilkan baris baru ketika saya menggunakan tanda kutip tunggal?

Mat
sumber
Jika ada yang tertarik dengan solusi yang berfungsi untuk browser dan terminal (cli, command line): stackoverflow.com/a/9665253/1923625
Omar Tariq
Sejujurnya tidak ada alasan sama sekali untuk mencari penawaran tunggal di semua biaya . Kedua sintaks melayani untuk suatu alasan. Jika Anda ingin variabel yang diinterpolasi atau urutan yang lolos, Anda seharusnya menggunakan kuotasi ganda dengan sengaja . Aturan yang baik untuk diikuti adalah: selalu gunakan tanda kutip tunggal, kecuali jika Anda ingin tanda kutip ganda karena alasan yang baik . Itulah konsistensi teman-teman saya.
Victor Schröder

Jawaban:

142

Tidak, karena tanda kutip tunggal bahkan menghambat penggantian kode hex.

echo 'Hello, world!' . "\xA";
Ignacio Vazquez-Abrams
sumber
1
Ah ok .. Saya berharap saya tidak perlu menggunakan itu .. Terima kasih!
Matt
ya pak. Dia menjawabnya dalam waktu kurang dari 10 menit. Saya harus menunggu sampai saat itu untuk menerima, kemudian saya lupa tentang itu haha.
Matt
1
Apakah ada alternatif untuk ini? Saya perlu menggunakannya di preg_replace yang saya tidak bisa menggunakan tanda kutip ganda.
Alex Hadley
1
Itu bukan alasan yang tepat. Bukan karena di PHP Anda tidak dapat mengekspresikan karakter baris baru dalam tanda kutip tunggal. Dan itu saja. Membaca manual bisa membantu :)
hakre
3
@ hakre Tentunya, membaca manual bisa membantu, tapi untungnya, StackOverflow adalah tempat untuk mencari jawaban ini;)
Frederik Krautwald
108
echo 'hollow world' . PHP_EOL;

Gunakan PHP_EOL konstan maka OS juga independen.

Cangkir
sumber
4
Anda biasanya tidak boleh menggunakan PHP_EOL karena hal ini membuat kode Anda tergantung pada sistem yang digunakan. Misalnya server Linux Anda berkomunikasi dengan server lain dan kemudian server Anda diganti oleh Windows ... Tidak bagus.
Andreas
25

Jika Anda echomenggunakan browser, Anda dapat menggunakan <br/>dengan pernyataan Anda:

echo 'Will print a newline<br/>';
echo 'But this wont!';
Anthony Forloney
sumber
3
Sayangnya ini lebih untuk tujuan terminal .. terima kasih atas tanggapan Anda.
Matt
Coba ini dalam email hanya teks;)
Kai Noack
22

FYI dimungkinkan untuk mendapatkan baris baru ke dalam string tanpa tanda kutip ganda:

printf('Please%1$sgive%1$sme%1$snewlines%1$s', PHP_EOL);

Yang mungkin berguna Jika ketakutan irasional Anda terhadap kutipan ganda tidak mengenal batas. Padahal saya khawatir obat ini mungkin lebih buruk dari penyakitnya.

leepower
sumber
Ini bukan rasa takut .. Anda hanya mendapatkan kinerja yang lebih baik ketika Anda menggunakan tanda kutip tunggal, jadi saya mencoba untuk menggunakannya lebih sering daripada tidak .. tapi yah, ini bukan solusi yang bagus untuk masalah ini, ini lebih banyak masalah daripada nilainya . Terima kasih.
Matt
5
Saya belum mengujinya tetapi saya berani bertaruh bahwa menggunakan tanda kutip ganda lebih cepat daripada menggunakan printfatau string catenation pada umumnya.
Mikko Rantalainen
Ini tidak selalu tidak rasional, tanda kutip ganda bisa menjadi masalah, tergantung pada apa yang ingin Anda lakukan. echo 'For example, I want this to spit out php code.\necho $this->stuff;';
David Baucum
@ David Baucum, saya tahu ini adalah utas lama tetapi hanya untuk referensi untuk diri sendiri dan siapa pun yang menemukan ini, echo "For example, I want this to spit out php code.\necho \$test;";- seperti yang Anda lihat, Anda dapat melarikan diri dari variabel, yang menyelesaikan masalah yang Anda gambarkan dengan tanda kutip ganda.
Josh Wood
9

ADA perbedaan dalam menggunakan tanda kutip tunggal VS ganda dalam PHP

misalnya: 1. echo '$var\n'; 2.echo "$var\n";

  • dalam 1, PHP akan mencetak secara harfiah: $var\n
  • pada 2, PHP harus mencari lokasi di memori $var, dan mengembalikan nilai di lokasi itu, juga, harus menguraikan \ n sebagai karakter baris baru dan mencetak hasilnya

Kita berada dalam kisaran sepersejuta detik, tetapi ada perbedaan dalam kinerja. Saya akan merekomendasikan Anda untuk menggunakan tanda kutip tunggal bila memungkinkan, bahkan mengetahui Anda tidak akan dapat merasakan peningkatan kinerja ini. Tapi saya seorang pengembang paranoid dalam hal kinerja.

linuxdev
sumber
Saya memuji Anda karena mencoba mencari cara terbaik untuk melakukan ini daripada menggunakan solusi tanda kutip ganda AKA Solusi malas-pengembang-.
linuxdev
Cara terbaik yang saya tahu untuk melakukan apa yang Anda inginkan: echo 'foo', "\ n";
linuxdev
3
Cara cepat untuk melakukannya adalahecho $var + "\n";
Hengjie
2
@ Hengjie: Maksudmu mungkin echo $var . "\n";.
Skippy le Grand Gourou
@linuxdev: Saya tidak melihat inti dari jawaban ini. Karena output 1 tidak sama dengan output 2 (bahkan dengan asumsi $var='$var'...), bukankah Anda membandingkan apel dengan jeruk?
Skippy le Grand Gourou
8

Satu-satunya urutan melarikan diri yang dapat Anda gunakan dalam kutipan tunggal adalah untuk kutipan tunggal itu sendiri.

$foo = 'That\'s great';

Satu-satunya cara Anda bisa memasukkan baris baru ke string yang dibuat dengan tanda kutip tunggal adalah dengan memasukkan baris baru literal

$bar = 'That\'s
cheating';
Alan Storm
sumber
1
Itu dibandingkan dengan jawaban lain solusi termudah.
Kai Noack
5

Saya bertanya-tanya mengapa tidak ada yang menambahkan alternatif menggunakan fungsi chr():

echo 'Hello World!' . chr(10);

atau, lebih efisien jika Anda akan mengulanginya sejuta kali:

define('C_NewLine', chr(10));
...
echo 'Hello World!' . C_NewLine;

Ini menghindari notasi yang kelihatannya konyol untuk menyatukan string kutipan tunggal dan ganda.

NewSites
sumber
1
Ini sepertinya solusi IMO yang paling cantik, paling ramah serat, dan tidak berbulu.
daraul
3

Anda mungkin ingin mempertimbangkan untuk menggunakan <<<

misalnya

<<<VARIABLE
this is some
random text
that I'm typing 
here and I will end it with the 
same word I started it with
VARIABLE

Info lebih lanjut di: http://php.net/manual/en/language.types.string.php

Btw - Beberapa lingkungan pengkodean tidak tahu bagaimana menangani sintaks di atas.

Duniyadnd
sumber
1
Ah ya ... tapi saya masih BENCI fakta bahwa VARIABEL pada akhirnya memecah semua lekukan dalam kode Anda ... Saya telah mengalami begitu banyak kesalahan (bodoh) menggunakan sintaks HEREDOC
Matt
0

Tidak, menurut dokumentasi , PHP tidak mengenali simbol khusus dalam tanda kutip tunggal. Dan tidak ada alasan tunggal untuk menggunakan tanda kutip tunggal sebanyak mungkin

Akal Sehat Anda
sumber
Ada sedikit peningkatan kinerja untuk menggunakan tanda kutip tunggal. Juga, sepertinya praktik yang baik untuk secara eksplisit menentukan kapan Anda ingin variabel diganti.
Jackson Miller
4
@ Jackson tidak ada peningkatan kinerja. Dengan cara apa pun. Lupakan rumor kekanak-kanakan ini. Dan tidak, jangan bicara tentang variabel, tetapi urutan khusus. Jika Anda ingin urutan apa pun, variabel atau baris baru akan diperluas - gunakan tanda kutip ganda, dengan tujuan itu . Dan OP menolak untuk menggunakannya untuk tujuan itu tidak masuk akal.
Akal Sehat Anda
Sama sekali tidak ada alasan untuk tidak menggunakan tanda kutip ganda ketika Anda ingin menginterpolasi variabel di dalam string. Hal yang sama berlaku dengan lolos /nuntuk jeda baris. Lebih mudah, lebih bersih, lebih mudah dibaca dan memiliki penalti kinerja nol .
Victor Schröder
0

jika Anda memiliki variabel:

$your_var = 'declare your var';
echo 'i want to show my var here'.$your_var.'<br>';
Braham Youssef
sumber
0

Anda bisa menggunakan ini:

echo 'Hello World' . "\n";
Uji Cisco
sumber
-1

Ini bekerja dengan baik untuk saya:

print_r('Hello world'.PHP_EOL);
Mohammad Zaid Pathan
sumber