PHP'de yeni satırı tek tırnak içinde yazdır


126

Mümkün olduğunca tek tırnak kullanmaya çalışıyorum ve tek tırnak içinde \ n kullanamayacağımı fark ettim. Return tuşuna basarak bir satırsonu girebileceğimi biliyorum ama bu kodumun girintisini mahvediyor.

Tek tırnak kullandığımda yeni satır üretecek yazabileceğim bir ASCII karakteri veya başka bir şey var mı?


Hem tarayıcı hem de terminal (cli, komut satırı) için çalışan bir çözümle ilgilenen varsa: stackoverflow.com/a/9665253/1923625
Omar Tariq

Dürüst olmak gerekirse, ne pahasına olursa olsun tek bir fiyat teklifi almak için hiçbir neden yok . Her iki sözdizimi de bir nedene hizmet eder. Eğer interpole değişkenleri veya kaçan dizileri istiyorsanız, olan sözde çift tırnak kullanımı kasıtlı . İzlenecek iyi bir kural şudur: Çift tırnak işaretlerini iyi bir nedenle istemediğiniz sürece her zaman tek tırnak kullanın . Bu tutarlılık dostlarım.
Victor Schröder

Yanıtlar:


143

Hayır, çünkü tek tırnak işaretleri onaltılık kod değiştirmeyi bile engeller.

echo 'Hello, world!' . "\xA";

1
Ah tamam .. Buna başvurmak zorunda kalmamayı umuyordum .. Teşekkürler!
Matt

Evet efendim. 10 dakikanın altında cevapladı. Kabul etmek için o zamana kadar beklemek zorunda kaldım, sonra unuttum haha.
Matt

1
Buna alternatif var mı? Ben çift tırnak kullanımı olamayacağını bir preg_replace kullanmak gerekir.
Alex Hadley

1
Doğru mantık bu değil. Hayır, çünkü PHP'de yeni satır karakterini tek tırnak içinde ifade edemezsiniz. Ve bu kadar. Kılavuzu okumak yardımcı olabilirdi :)
hakre

3
@hakre Elbette, kılavuzu okumak yardımcı olabilirdi, ama neyse ki, StackOverflow tam olarak bu cevapları
rahatça arayabileceğiniz yerdir

108
echo 'hollow world' . PHP_EOL;

Sabit PHP_EOL kullanın, o zaman işletim sisteminden de bağımsızdır.


4
Genellikle PHP_EOL kullanmamalısınız çünkü bu, kodunuzu üzerinde çalıştığı sisteme bağımlı hale getirir. Örneğin, Linux sunucunuz başka bir sunucu ile iletişim kuruyor ve ardından sunucunuz Windows ile değiştiriliyor ... İyi değil.
Andreas

25

echoBir tarayıcıya giriyorsanız , ifadenizle <br/>birlikte kullanabilirsiniz :

echo 'Will print a newline<br/>';
echo 'But this wont!';

3
Ne yazık ki daha çok terminal amaçlı .. Yine de cevabınız için teşekkürler.
Matt

Bunu yalnızca metin içeren bir e-postada deneyin;)
Kai Noack

22

Bilginize, çift tırnak olmadan dizelere yeni satırlar eklemek mümkündür:

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

Bu yararlı olabilir Eğer mantıksız çift tırnak korkunuz sınır tanımıyorsa. Bu tedavinin hastalıktan daha kötü olabileceğinden korkmama rağmen.


Bu bir korku değil .. sadece tek tırnak kullandığınızda daha iyi performans elde edersiniz, bu yüzden onları daha sık kullanmaya çalışıyorum, o zaman değil .. ama evet, bu sorun için gerçekten harika bir çözüm değil, değerinden daha fazla sorun . Teşekkürler.
Matt

5
Test etmedim ama bahse girerim çift tırnak kullanmanın printfgenel olarak kullanmaktan veya string catenationdan daha hızlıdır .
Mikko Rantalainen

Her zaman mantıksız değildir, ne yapmak istediğinize bağlı olarak çift alıntılar sorunlu olabilir. echo 'For example, I want this to spit out php code.\necho $this->stuff;';
David Baucum

@DavidBaucum, bunun eski bir konu olduğunu biliyorum ama sadece kendinize ve buna rastlayan diğer kişilere referans olması için echo "For example, I want this to spit out php code.\necho \$test;";- gördüğünüz gibi değişkenlerden kaçabilirsiniz, bu da çift tırnakla tanımladığınız sorunu çözer.
Josh Wood

9

PHP'de tek ve çift tırnak kullanmada bir fark vardır

örneğin: 1. echo '$var\n'; 2.echo "$var\n";

  • 1'de, PHP harfi harfine yazacaktır: $var\n
  • 2'de, PHP'nin bellekteki konumu araması ve $varbu konumdaki değeri döndürmesi gerekecek, ayrıca \ n'yi yeni bir satır karakteri olarak ayrıştırması ve bu sonucu yazdırması gerekecek

Saniyenin milyonda biri aralığındayız, ancak performansta bir fark var. Bu performans artışını algılayamayacağınızı bile bilerek, mümkün olduğunda tek tırnak kullanmanızı tavsiye ederim. Ama performans söz konusu olduğunda paranoyak bir geliştiriciyim.


Çift tırnak çözümünü kullanmak yerine bunu yapmanın en iyi yolunu aramaya çalıştığınız için sizi tebrik ediyorum AKA Tembel geliştirici çözümü.
linuxdev

İstediğinizi yapmanın bildiğim en iyi yolu: echo 'foo', "\ n";
linuxdev

3
Bunu yapmanın hızlı yoluecho $var + "\n";
Hengjie

2
@Hengjie: Muhtemelen demek istiyorsun echo $var . "\n";.
Skippy le Grand Gourou

@linuxdev: Bu cevabın amacını anlamıyorum. 1'in çıktısı 2'nin çıktısı ile aynı olmadığına göre ( $var='$var'… varsayarsak bile ), elmaları portakallarla karşılaştırmıyor musunuz?
Skippy le Grand Gourou

8

Tek tırnak içinde kullanabileceğiniz tek kaçış dizisi tek tırnak içindir.

$foo = 'That\'s great';

Tek tırnaklarla oluşturulmuş bir dizeye yeni bir satır eklemenin tek yolu, değişmez bir yeni satır eklemektir.

$bar = 'That\'s
cheating';

1
Bu, diğer cevaplarla karşılaştırıldığında en kolay çözümdür.
Kai Noack

5

Merak ediyorum, neden hiç kimse işlevi kullanma alternatifini eklemedi chr():

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

veya milyonlarca kez tekrar edecekseniz daha verimli:

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

Bu, tek ve çift tırnaklı bir dizeyi birleştirmenin aptalca görünen gösterimini önler.


1
Bu, en güzel, en tüy bırakmayan, taşınabilir çözüm IMO gibi görünüyor.
daraul

3

<<< kullanmayı düşünebilirsiniz

Örneğin

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

Daha fazla bilgi için: http://php.net/manual/en/language.types.string.php

Btw - Bazı Kodlama ortamları yukarıdaki sözdiziminin nasıl işleneceğini bilmez.


1
Ah evet ... ama yine de DEĞİŞKEN'in kodunuzdaki tüm girintileri kırmasından nefret ediyorum ... HEREDOC sözdizimini kullanarak pek çok (aptalca) hatayla karşılaştım
Matt

0

Hayır, belgelere göre , PHP tek tırnak içinde hiçbir özel sembolü tanımaz. Ve mümkün olduğunca çok tek tırnak kullanmak için tek bir neden yok


Tek tırnak kullanımında küçük bir performans artışı var. Ayrıca, değişkenlerin ne zaman değiştirilmesini istediğinizi açıkça tanımlamak iyi bir uygulama gibi görünüyor.
Jackson Miller

4
@Jackson performans artışı yok . Herhangi bir yöntemle. Bu çocukça söylentileri unutun. Ve hayır, değişkenlerden değil, özel dizilerden bahsedin. Genişletilmiş edilecek herhangi diziyi, bir değişken veya bir yeni satır istiyorsanız -, çift tırnak kullanımı 's bilerek . Ve OP'nin onu amacına uygun kullanmayı reddetmesi saçma.
Sizin Common Sense

Bir dizge içindeki bir değişkeni enterpolasyon yapmak istediğinizde çift tırnak kullanmamanız için kesinlikle hiçbir neden yoktur. Aynı /nsatır sonları için kaçış için de geçerli. Daha kolay, daha temiz, daha okunaklı ve sıfır performans cezası var.
Victor Schröder

0

bir değişkeniniz olması durumunda:

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


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.