줄 바꿈 문자를 만드는 방법?


405

PHP에서 줄 바꿈 문자를 만들려고합니다.

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';

그런 다음 작성된 파일을 메모장에서 열고 문자 그대로 개행을 씁니다.

요한 1 서 \ r \ n 요한 1 서 \ r \ n 요한 1 서 \ r \ n

의 많은 변형을 시도 \r\n했지만 작동하지 않습니다. 개행이 개행으로 바뀌지 않는 이유는 무엇입니까?


답변:


638

큰 따옴표로 묶인 문자열 만 이스케이프 시퀀스 \r\n'0x0D'및 '0x0A'로 각각 해석 하므로 원하는 경우 :

"\r\n"

반면 작은 따옴표로 묶인 문자열 은 이스케이프 시퀀스 \\및 만 알고 \'있습니다.

따라서 작은 따옴표로 묶은 문자열을 다른 곳에서 생성 된 줄 바꿈과 연결하지 않으면 (예 : 큰 따옴표로 묶은 문자열 "\r\n"사용 또는 chrfunction 사용 chr(0x0D).chr(0x0A)) 작은 따옴표로 묶은 문자열 내에서 줄 바꿈을하는 유일한 방법은 문자 그대로 편집기에서 입력하는 것입니다.

$s = 'some text before the line break
some text after';

특정 문자 순서가 필요한 경우 편집기에서 줄 바꿈 설정을 확인하십시오 ( \r\n예 :).


1
@Pacerier 작은 따옴표로 묶인 문자열에서 캐리지 리턴과 줄 바꾸기 문자를 사용하는 유일한 방법은 키보드를 통해 문자를 직접 입력하는 것입니다 (행 끝의 편집기 설정에 따라 Enter를 누르십시오). 그렇지 않으면 문자열 연결을 사용하십시오.
Gumbo

1
@Gumbo : 작은 따옴표로 묶인 문자열은 이스케이프 시퀀스 \\ 및 \ '만 알고 있습니다. 하지만 방금 <? php echo 'Internet Explorer를 사용하고 있습니다. <br>'; 에코 '새 줄 추가'; ?>하고 브라우저에서 출력을 보았습니다. 문자 그대로 내가 표시 한 두 문자열 사이에 줄 바꿈을 추가했습니다. <br> 또는 <br/> 문자는 작은 따옴표로 묶인 문자열로 확장됩니다. 작은 따옴표로 묶인 문자열 내부에서 PHP가 이해할 수있는이 세 가지 HTML 외에 다른 HTML 문자가 있습니까? 친절하게 답변을 업데이트하도록 요청하십시오. 감사합니다.
PHPFan

1
@ user2839497 당신이 말하는 것은 말이되지 않습니다. 여기에는 브라우저 컨텍스트가 없습니다. 물론 브라우저는 <br/>가 발생할 때 줄 바꿈을 렌더링합니다. 물론 작은 따옴표로 묶인 문자열에 '<br/>'를 추가하지 못하게하는 것은 없습니다. 그러나 이것이 간단한 텍스트 파일에서 줄 바꿈을 렌더링하지는 않습니다.
펜서

1
@Pacerier Gumbo가 자신의 의견에서 제안한 것과 같이 편집기에서 문자열을 줄 바꿈하는 대신 작은 따옴표 정책의 경우 Gumbos 답변의 다른 솔루션을 사용할 수 있습니다 (예 : 'newline 출력'.chr (0x0A). ' '.
펜서

2
PHP_EOL대신 사용해야 합니다
kurdtpage

234

사전 정의 된 PHP_EOL상수를 사용하십시오 .

echo $clientid, ' ', $lastname, PHP_EOL;

상수 값은 PHP가 실행되는 운영 체제의 줄 끝에 따라 설정됩니다. 리눅스에서는 "\n"; Windows에서는입니다 "\r\n".


96

PHP의 "echo"명령은 출력을 원시 html로 브라우저에 출력하므로 큰 따옴표로 묶어도 HTML의 개행 문자는 아무 의미가 없기 때문에 브라우저가 두 줄로 구문 분석하지 않습니다. 따라서 다음 중 하나를 사용해야합니다.

echo [output text]."<br>";

"echo"를 사용하거나 fwrite를 사용하는 경우 ...

fwrite([output text]."\n");

"\ n"대신 HTML 줄 바꿈이 출력됩니다.


4
질문이 제기되는 방식에 따라 그는 파싱이나 일반 텍스트 읽기가 HTML로 렌더링되지 않도록이 데이터를 텍스트 상자 나 자바 스크립트 등으로 출력 할 가능성이 있습니다.
PC3TJ


23

큰 따옴표 사이의 문자열이 ""보간됩니다. 즉, 이스케이프 된 문자를 인쇄 가능한 문자로 변환합니다.

작은 따옴표 사이의 문자열 ''은 리터럴이므로 문자를 입력 한 그대로 처리됩니다.

같은 줄에 둘 다 가질 수 있습니다.

echo '$clientid $lastname ' . "\r\n";
echo "$clientid $lastname \r\n";

출력 :

$clientid $lastname
1 John Doe

PHP에서 여러 유형의 문자열 표기법에 대한 설명은 질문 작성자가 작성한 오류를 보여 주므로 좋습니다. 그러나 코드 샘플은 변수가 작은 따옴표로 묶인 문자열에 사용되므로 예상 한 결과를 생성하지 않으며 언급 한 것처럼 보간되지 않습니다!
Damien Flament 2016 년

@Damien Flament, 그것이 내가 말한 것입니다-작은 따옴표 사이의 내용은 보간되지 않지만 큰 따옴표 사이의 내용은 있습니다. 리터럴 "$ clientid"및 "$ lastname"이 아닌 $ clientid 및 $ lastname의 내용이 표시 될 것으로 예상되므로 내 예제가 혼동 될 수 있습니다. 나는 이것이 디버깅 중에 사용한 테이블의 제목이라고 생각합니다. 다음 행했을 것이다echo "$clientid $lastname\r\n"
케빈 S. 밀러에게

"예상 결과"를 쓸 때 질문 작성자가 질문에 예상 한 결과에 대해 이야기하고 있습니다. 댓글에 표시된 코드를 답변에 추가하고 결과를 표시하면 답변 품질이 향상 될 수 있습니다.
Damien Flament


13

실제로 \r\n출력의 html 쪽입니다. 이러한 문자를 사용하면 HTML 코드에서 개행을 작성하여 더 읽기 쉽게 만들 수 있습니다.

echo "<html>First line \r\n Second line</html>";

출력합니다 :

<html>First line
Second line</html>

페이지를 보는 것은 :

First line Second line

당신이 정말로 이것을 의미한다면, 당신은 작은 따옴표를 ""따옴표로 고치기 만하면됩니다 :

echo "\r\n";

그렇지 않으면 텍스트를 분할하려는 경우 샘플 '첫 번째 줄'과 '두 번째 줄'에서 html 코드를 사용해야합니다. <br />:

First line<br />Second line

출력됩니다 :

First line
Second line

또한 전체 스크립트를 다음과 같이 바꾸면 더 읽기 쉽습니다.

echo "$clientid $lastname \r\n";

1
아닙니다. 대부분 잘못 되었기 때문입니다. 첫 번째 코드 블록은 다음과 같이 렌더링됩니다. First line Second line줄 바꿈을 포함한 모든 공백은 렌더링 된 출력에서 ​​하나의 공백 문자로 압축됩니다. 또한 </br>유효한 HTML 이외의 것입니다.
D_4_ni

1
PHP 스크립트로 문자 이메일을 발송하는 경우에도 줄 바꿈 대신 줄 끝이 필요합니다 (<br>)
KennyV

9

w3school는 다음과 같이 제공했습니다.

echo nl2br("One line.\n Another line.");

이 기능을 사용하면 할 수 있습니다 .. 나는 위에서 언급 한 다른 방법을 시도했지만 도움이되지 않습니다.


문제는 HTML에서 단락 내에서 줄 바꿈에 관한 것이 아닙니다. 개행 문자 에 관한 것입니다 !
Damien Flament 2016 년

컨텍스트의 경우 nl2br()함수는 개행 문자를 <br />HTML 태그 로 변환 합니다. 이는 브라우저 페이지에서 줄 바꿈을 만들지 만 텍스트 파일이나 JavaScript에서 줄 바꿈을 만들거나 화면이나 콘솔로 인쇄 할 때 유용 할 수 있습니다.
SherylHohman

4

어떤 이유로 든 PHP에서 줄 바꿈 이스케이프에 대해 묻는 모든 단일 게시물은 작은 따옴표로 묶은 문자열에 줄 바꿈을 삽입하면 생각대로 정확하게 수행됩니다.

예 1.

 echo 'foo\nbar';

예제 1에서는 원하는 결과를 명확하게 인쇄하지 않지만 작은 따옴표로 줄 바꿈을 이스케이프 할 수는 없지만 다음과 같이 할 수 있습니다.

예 2.

 echo 'foo
 bar';

예제 2에는 정확히 원하는 동작이 있습니다. 불행하게도 삽입되는 줄 바꿈은 운영 체제에 따라 다릅니다. 웹 브라우저 / 서버가 줄 바꿈을 \ r, \ r \ n 또는 \ n인지 올바르게 해석하므로 일반적으로 문제가되지 않습니다.

분명히 웹 브라우저와 여러 운영 체제에 다른 수단을 통해 파일을 배포하려는 경우이 솔루션이 적합하지 않습니다. 이 경우 다른 답변 중 하나가 표시됩니다.

참고 : 기능이 풍부한 텍스트 편집기를 사용하면 파일을 편집하는 운영 체제와 다른 운영 체제에서 개행을 나타내는 이진 문자로 개행을 삽입 할 수 있어야합니다. 다른 모든 방법이 실패하면 16 진 편집기를 사용하여 이진 ASCII 문자를 삽입하면됩니다.


3

텍스트 문자열에서 줄 바꿈을 얻으려면 PHP nl2br을 사용하십시오.

$ text = "마누는 좋은 소년입니다. (Enter) 그는 잘 코딩 할 수 있습니다.

echo nl2br ($ text);

결과.

마누는 좋은 소년입니다.

그는 잘 코딩 할 수 있습니다.


1
nl2br함수는 개행 문자를 <br />HTML 태그 로 변환 합니다. 문자열에 개행 문자가 포함되어 있지 않으면이 함수는 아무 것도 수행하지 않습니다! 또한 질문은 HTML의 단락 내에서 줄 바꿈에 관한 것이 아닙니다. 개행 문자 에 관한 것입니다 !
Damien Flament

2

또한 작은 따옴표와 큰 따옴표 모두 에서이 조합을 시도했습니다. 그러나 아무도 효과가 없었습니다. 큰 따옴표에 \n더 잘 사용 하는 대신 <br/>. 이렇게 ..

$variable = "and";
echo "part 1 $variable part 2<br/>";
echo "part 1 ".$variable." part 2";

문제는 HTML에서 단락 내에서 줄 바꿈에 관한 것이 아닙니다. 개행 문자 에 관한 것입니다 !
Damien Flament

2

캐리지 리턴에는 chr (13)을 사용하고 줄 바꾸기에는 chr (10)을 사용하십시오.

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo chr (13). chr (10);

2

echo 문은 항상 <br>큰 따옴표 안에 사용 합니다.


2
문제는 HTML에서 단락 내에서 줄 바꿈에 관한 것이 아닙니다. 개행 문자 에 관한 것입니다 !
Damien Flament

1

아무것도 나를 위해 일하지 않았다.

PHP_EOL

. "\r\n";

$NEWLINE_RE = '/(\r\n)|\r|\n/'; // take care of all possible newline-encodings in input file
$var = preg_replace($NEWLINE_RE,'', $var);

나를 위해 작동 :

$admin_email_Body = $admin_mail_body .'<br>' ."\r\n";
$admin_email_Body .= 'This is line 2 <br>' ."\r\n";
$admin_email_Body .= 'This is line 3 <br>' ."\r\n";

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