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?


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";

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.


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!';

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.


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.


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';

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.


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.


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


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>';


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.