Роздрукуйте новий рядок у PHP в єдиних лапках


125

Я намагаюся використовувати одиничні лапки якомога більше, і я помітив, що не можу використовувати \ n в одних лапках. Я знаю, що я можу просто ввести новий рядок буквально натисканням клавіші return, але це викручує відступ мого коду.

Чи є якийсь символ ASCII або щось, що я можу набрати, щоб створити новий рядок, коли я використовую одинарні лапки?


Якщо когось цікавить рішення, яке працює як для браузера, так і для терміналу (cli, командний рядок): stackoverflow.com/a/9665253/1923625
Omar Tariq

Чесно немає жодної причини шукати одинарні котирування за будь-яку ціну . Обидва синтаксису служать причині. Якщо ви хочете інтерполювати змінні або уникнуті послідовності, ви повинні навмисно використовувати подвійні лапки . Добре правило, яке слід дотримуватися: завжди використовуйте одинарні лапки, якщо ви не хочете, щоб подвійні лапки були з вагомих причин . Це послідовність моїх друзів.
Віктор Шредер

Відповіді:


142

Ні, оскільки одиничні котирування навіть гальмують заміну шістнадцяткових кодів

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

1
Ну добре .. Я сподівався, що мені не доведеться вдаватися до цього .. Дякую!
Метт,

так, сер. Він відповів на це менше 10 хв. Мені довелося чекати до того часу, щоб прийняти, тоді я забув про це ха-ха.
Метт,

1
Чи є альтернатива цьому? Мені потрібно використовувати його в попередньому місці, в якому я не можу використовувати подвійні лапки.
Алекс Хедлі

1
Це не правильні міркування. Це не тому, що в PHP ви не можете висловити символ нового рядка в одиничних лапках. І це все. Читання посібника могло допомогти :)
hakre

3
@hakre Безумовно, читання посібника могло б допомогти, але, на щастя, StackOverflow - це місце, де зручно шукати саме ці відповіді;)
Frederik Krautwald

108
echo 'hollow world' . PHP_EOL;

Використовуйте постійний PHP_EOL, тоді він також не залежить від ОС.


4
Зазвичай не слід використовувати PHP_EOL, оскільки це робить ваш код залежним від системи, на якій він працює. Наприклад, ваш Linux-сервер спілкується з іншим сервером, і тоді ваш сервер заміняється Windows ... Не добре.
Андреас

25

Якщо ви echoкористуєтесь веб-переглядачем, ви можете використовувати <br/>зі своєю заявою:

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

3
На жаль, це більше для термінальних цілей .. хоча за вашу відповідь.
Метт,

Спробуйте це лише в текстовому листі;)
Кай Ноак

22

FYI можна отримати нові рядки в рядки без подвійних лапок:

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

Що може бути корисно, якщо ваш ірраціональний страх перед подвійними цитатами не знає меж. Хоча я боюся, що це вилікування може бути гіршим, ніж захворювання.


Це не страх .. Ви просто отримуєте кращу продуктивність, коли використовуєте одиничні цитати, тому я намагаюся використовувати їх частіше, ніж ні .. але так, це насправді не чудове рішення для цієї проблеми, її більше клопоту, ніж варто . Дякую.
Метт

5
Я не перевіряв цього, але printfставлюся, що використання подвійних лапок швидше, ніж використання або строкова катенація взагалі.
Мікко Ранталайнен

Це не завжди нераціонально, подвійні цитати можуть бути проблематичними, залежно від того, що ви хочете зробити. echo 'For example, I want this to spit out php code.\necho $this->stuff;';
Девід Баукум

@DavidBaucum, я знаю, що це стара тема, але лише для ознайомлення з вами та іншими, хто натрапляє на це, echo "For example, I want this to spit out php code.\necho \$test;";- як ви бачите, ви можете уникати змінних, що вирішує проблему, яку ви описуєте, подвійними лапками.
Джош Вуд

9

Є різниця у використанні одиничних подвійних лапок VS в PHP

напр .: 1. echo '$var\n'; 2.echo "$var\n";

  • через 1, PHP надрукує буквально: $var\n
  • у другому PHP доведеться шукати розташування в пам'яті $varта повертати значення в цьому місці, також доведеться розбирати \ n як новий символ рядка та друкувати цей результат

Ми знаходимося в діапазоні мільйонів секунди, але різниця у продуктивності. Я рекомендую вам використовувати поодинокі цитати, коли це можливо, навіть знаючи, що ви не зможете сприймати це збільшення продуктивності. Але я параноїдний розробник, що стосується продуктивності.


Я вітаю вас за те, що ви намагаєтесь знайти найкращий спосіб зробити це замість використання подвійних лапок AKA The lezy-developer-рішення.
linuxdev

Найкращий спосіб, який я знаю, для того, щоб робити те, що ти хочеш: echo 'foo', "\ n";
linuxdev

3
Швидкий спосіб зробити цеecho $var + "\n";
Hengjie

2
@Hengjie: Ви, мабуть, маєте на увазі echo $var . "\n";.
Skippy le Grand Gourou

@linuxdev: Я не бачу сенсу цієї відповіді. Оскільки вихід 1 у будь-якому випадку не такий, як вихід 2 (навіть якщо вважати $var='$var'…), ви не порівнюєте яблука з апельсинами?
Skippy le Grand Gourou

8

Єдина послідовність евакуації, яку ви можете використовувати в одиничних лапках, - це сама єдина цитата.

$foo = 'That\'s great';

Єдиний спосіб, коли ви могли б вставити новий рядок у рядок, створений за допомогою окремих лапок, - це вставити буквальний новий рядок

$bar = 'That\'s
cheating';

1
Ось порівняно з іншими відповідями найпростіше рішення.
Кай Ноак

5

Цікаво, чому ніхто не додав альтернативи використанню функції chr():

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

або, що більш ефективно, якщо ви збираєтесь повторити це мільйон разів:

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

Це дозволяє уникнути дурного вигляду позначення об'єднання одно- і подвійних цитуючих рядків.


1
Це здається найкрасивішим, портативним рішенням IMO, що забезпечує найвищий вміст.
daraul

3

Ви можете розглянути можливість використання <<<

напр

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

Більше інформації за адресою: http://php.net/manual/en/language.types.string.php

Btw - Деякі середовища кодування не знають, як обробити вищевказаний синтаксис.


1
Ага так ... але я все одно ненавиджу той факт, що ВІДМІННО в кінці порушує всі відступи у вашому коді ... Я натрапив на стільки (дурних) помилок, використовуючи синтаксис HEREDOC
Метт,

0

Ні, згідно з документацією , PHP не визнає спеціального символу в одиничних лапках. І немає єдиної причини використовувати якомога більше цитат


Відзначається незначне збільшення продуктивності до використання одиничних лапок. Крім того, здається, що вдала практика чітко визначати, коли потрібно замінити змінні.
Джексон Міллер

4
@Jackson не збільшується продуктивність. В будь-який спосіб. Забудьте ці дитячі чутки. І ні, не говоріть не про змінних, а про особливі послідовності. Якщо ви хочете, щоб будь-яку послідовність, змінну або новий рядок було розширено - використовуйте подвійні лапки, за цією метою . І відмова ОП від використання цього за призначенням - це нісенітниця.
Твій здоровий глузд

Немає абсолютно ніяких причин не використовувати подвійні лапки, коли потрібно інтерполювати змінну всередині рядка. Те саме стосується втечі /nдля розривів лінії. Це простіше, чистіше, більш зручний для читання і має нульову втрату продуктивності.
Віктор Шредер



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.