Роздрукуйте новий рядок у 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.