작은 따옴표로 PHP에서 줄 바꿈 인쇄


125

작은 따옴표를 최대한 많이 사용하려고하는데 작은 따옴표로 \ n을 사용할 수 없다는 것을 알았습니다. return 키를 눌러 문자 그대로 줄 바꿈을 입력 할 수는 있지만 코드의 들여 쓰기를 망칠 수 있습니다.

작은 따옴표를 사용할 때 줄 바꿈을 생성하는 ASCII 문자 또는 입력 할 수있는 것이 있습니까?


브라우저와 터미널 모두에서 작동하는 솔루션에 관심이있는 사용자 (cli, 명령 행) : stackoverflow.com/a/9665253/1923625
Omar Tariq

솔직히 모든 비용으로 작은 따옴표를 찾는 이유는 없습니다 . 두 구문 모두 이유가 있습니다. 당신이 보간 변수 또는 이스케이프 시퀀스를 원하는 경우에, 당신이하는 가정 따옴표를 사용하기 위해 의도적으로 . 따르는 좋은 규칙은 다음과 같습니다 . 좋은 이유로 큰 따옴표 원하지 않는 한 항상 작은 따옴표를 사용 하십시오 . 그것은 내 친구들의 일관성입니다.
빅터 슈뢰더

답변:


142

작은 따옴표는 16 진 코드 교체를 방해하기 때문에 아닙니다.

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

1
아 알았어
Matt

알겠습니다. 그는 10 분 안에 대답했다. 그때까지 기다렸다가 받아 들였다가 잊어 버렸습니다.
Matt

1
이것에 대한 대안이 있습니까? 큰 따옴표를 사용할 수없는 preg_replace에서 사용해야합니다.
Alex Hadley

1
그것은 올바른 추론이 아닙니다. PHP에서는 줄 바꿈 문자를 작은 따옴표로 표현할 수 없기 때문에 아닙니다. 그리고 그게 다야. 매뉴얼을 읽는 것이 도움이 될 수 있습니다 :)
hakre

3
@hakre 확실히, 설명서를 읽는 것은 도움이 수 있지만, 다행히도, StackOverflow의 편리 정확히이 답을 볼 수있는 장소입니다)
프레데릭 Krautwald

108
echo 'hollow world' . PHP_EOL;

상수 PHP_EOL을 사용하면 OS 독립적입니다.


4
일반적으로 PHP_EOL을 사용하면 코드가 실행중인 시스템에 따라 달라 지므로 사용하지 않아야합니다. 예를 들어 Linux 서버가 다른 서버와 통신하고 서버가 Windows로 바뀝니다 ... 좋지 않습니다.
Andreas

25

echo브라우저를 사용하는 경우 다음 <br/>과 같이 사용할 수 있습니다 .

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

3
불행히도 터미널 목적으로 더 많은 .. 귀하의 응답에 감사드립니다.
Matt

텍스트 전용 이메일로 시도해보십시오;)
Kai Noack

22

참고로 큰 따옴표없이 문자열에 줄 바꿈을 넣을 수 있습니다.

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

큰 따옴표에 대한 비합리적인 두려움이 한계를 모르는 경우 유용 할 수 있습니다. 이 치료법이 질병보다 더 나 빠질까 걱정됩니다.


작은 따옴표를 사용할 때 더 나은 성능을 얻을 수 있으므로 더 자주 사용하려고하지 않습니다. 그러나 yah, 이것은이 문제에 대한 훌륭한 해결책이 아닙니다. . 감사.
Matt

5
나는 그것을 테스트하지는 않았지만 큰 따옴표를 사용하는 것이 printf일반적으로 또는 문자열 catenation을 사용하는 것보다 빠릅니다 .
Mikko Rantalainen

항상 불합리한 것은 아니며 큰 따옴표는 원하는 작업에 따라 문제가 될 수 있습니다. echo 'For example, I want this to spit out php code.\necho $this->stuff;';
David Baucum

@DavidBaucum, 나는 이것이 오래된 스레드라는 것을 알고 있지만 자신과이를 우연히 발견 한 다른 사람들 echo "For example, I want this to spit out php code.\necho \$test;";을 위해 참조 할 수 있습니다. 변수를 벗어날 수 있으므로 큰 따옴표로 설명하는 문제를 해결할 수 있습니다.
Josh Wood

9

PHP에서 작은 VS 큰 따옴표를 사용하는 것에 차이가 있습니다

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

  • 1에서 PHP는 문자 그대로 인쇄됩니다. $var\n
  • 2에서 PHP는의 위치를 ​​메모리에서 검색하고 해당 위치 $var의 값을 반환해야합니다. 또한 \ n을 줄 바꿈 문자로 구문 분석하고 결과를 인쇄해야합니다

우리는 백만 분의 1 초의 범위에 있지만 성능에는 차이가 있습니다. 가능한 한 작은 따옴표를 사용하는 것이 좋습니다.이 성능 향상을 인식하지 못할 수도 있습니다. 그러나 나는 성능에 관해서 편집증 개발자입니다.


큰 따옴표 솔루션 AKA 게으른 개발자 솔루션을 사용하는 대신이 작업을 수행하는 가장 좋은 방법을 찾으려고 노력해 주셔서 감사합니다.
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
다른 답변과 비교하여 가장 쉬운 솔루션입니다.
Kai Noack

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
아 네 ...하지만 여전히 끝에 VARIABLE이 코드의 모든 들여 쓰기를 중단한다는 사실을 싫어합니다 ... HEREDOC 구문을 사용하여 너무 많은 (멍청한) 오류가 발생했습니다.
Matt

0

아니,에 따라 문서 , PHP는 작은 따옴표로 특별한 기호를 인식하지 않습니다. 그리고 가능한 한 작은 따옴표를 사용하는 단 하나의 이유가 없다


작은 따옴표를 사용하면 약간의 성능 향상이 있습니다. 또한 변수를 교체 할시기를 명시 적으로 정의하는 것이 좋습니다.
잭슨 밀러

4
@Jackson에는 성능 향상 이 없습니다 . 어쨌든. 이 유치한 소문을 잊어 버리십시오. 그리고 아닙니다. 변수가 아니라 특별한 순서에 대해 이야기하십시오. 당신이 확장 될 어떤 순서, 변수 또는 줄 바꿈을하려면 - 따옴표를 사용하여 그것의 목적에 . 그리고 OP가 그것을 목적으로 사용하는 것을 거부하는 것은 말도 안됩니다.
당신의 상식

문자열 내에서 변수를 보간하려고 할 때 큰 따옴표를 사용하지 않을 이유는 없습니다. /n줄 바꿈을 위해 이스케이프 처리도 마찬가지입니다 . 그것은 청소기, 더 읽기 쉽게 그리고이 제로 성능 저하.
빅터 슈뢰더

0

변수가있는 경우 :

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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.