PHP의 여러 줄 문자열


141

치다:

$xml = "l";
$xml = "vv";

echo $xml;

이것은 vv 를 에코 합니다. SimpleXML 등의 여러 줄 문자열을 왜 그리고 어떻게 할 수 있습니까?


1
다음 줄에서 "l"다음에 "vv"를 에코 하시겠습니까?
Mike Samuel

3
찾아보십시오 concatenation. 그것이 문자열을 구성 할 때 호출되는 것입니다.
Crashspeeder 2016 년

14
@haywire Google의 첫 번째 유용한 결과입니다.
Cees Timmerman

답변:


262

잘,

$xml = "l
vv";

공장.

다음을 사용할 수도 있습니다.

$xml = "l\nvv";

또는

$xml = <<<XML
l
vv
XML;

주석을 기준으로 편집 :

.=연산자를 사용하여 문자열을 연결할 수 있습니다 .

$str = "Hello";
$str .= " World";
echo $str; //Will echo out "Hello World";

5
루프 또는 MySQL while 루프가 있는지 잊어 버렸습니다. 감사합니다
TheBlackBenzKid

89
@TheBlackBenzKid : 음 ... 뭐?
Madara 's Ghost

1
예. while ($ rc = mysql_fetch_array ($ adviews)) {$ xml. = "<set name = '". $ rc [ "date"]. "'value = '1'hoverText = '". $ rc [ "date" ]. " '/>"; } $ xml. = "</ graph>";
TheBlackBenzKid

3
@Pacerier heredoc 내에서 따옴표를 이스케이프 처리하지 않아도됩니다.
Madara 's Ghost

7
@Pacerier 당신은 왜 우리가 따옴표보다 heredoc을 귀찮게 해야하는지 물었습니다. 그 이유입니다. 둘 다 여러 줄 문자열에 대한 옵션입니다.
Madara 's Ghost

139

PHP에는 Heredoc 및 Nowdoc 문자열이 있으며, 이는 PHP에서 여러 줄 문자열을 처리하는 가장 좋은 방법입니다.

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
$var is replaced automatically.
EOD;

Nowdoc은 Heredoc과 유사하지만 변수를 대체하지 않습니다.

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
$var is NOT replaced in a nowdoc.
EOD;

엔드 토큰 EOD을 전혀 들여 쓰기해서는 안됩니다. 그렇지 않으면 PHP가이를 인식하지 못합니다. 또한 " EOD" 을 사용할 필요가 없습니다 . 원하는 문자열이 될 수 있습니다.


8
나는 항상 들여 쓰기를 잊어 버렸기 때문에 공감했습니다.
Matuszek

8
$xml="l" . PHP_EOL;
$xml.="vv";
echo $xml;

에코 :

l
vv

PHP_EOL 에 대한 문서 .


좋아하는. @Pacerier
TheBlackBenzKid

답변을 표시하는 방법이 있습니까? 나는 항상 당신이 질문에 대해서만 그렇게 할 수 있다고 생각했습니다. @TheBlackBenzKid
Pacerier

나는 그를 다시 채울 때 그에게 플러스 +1을 주었다는 것을 의미했다.
TheBlackBenzKid

@TheBlackBenzKid "faved";)
Andrés Morales

8

성능 측면에서 어떻게 쌓이는 지 확실하지 않지만 실제로 중요하지 않은 곳에서는이 형식을 좋아합니다. \ r \ n (CRLF)을 사용하고 PHP 파일의 형식이 무엇이든 확실하지 않기 때문에이 형식을 좋아합니다. 저장되었습니다.

$text="line1\r\n" .
      "line2\r\n" .
      "line3\r\n";

또한 내가 원하는대로 들여 쓰기 할 수 있습니다.


5

또 다른 해결책은 출력 버퍼링 을 사용 하는 것입니다. 출력 / 에코되는 모든 것을 수집하여 변수에 저장할 수 있습니다.

<?php
ob_start(); 

?>line1
line2
line3<?php 

$xml = ob_get_clean();

출력 버퍼링은이 정확한 경우에 대한 성능 및 코드 청결성 측면에서 최상의 솔루션은 아니지만 참조를 위해 여기에 남겨 두는 것이 좋습니다.


2

"="= "죽지 않은"= "일까?

$xml="l";
$xml.="vv";

당신에게 "lvv"를 줄 것이다;


1
그는 마녀 운영 체제를 사용한다고 말했습니까? 답변은 완전히 질문입니다;)
Norbert Orzechowicz

그러나 그로 인해 해당 요청에 따라 여러 줄 문자열 이 생성되지는 않습니다 .
ToolmakerSteve


0

코드 "l"과 "vv"를 코드의 개별 줄에 넣으려면 :

$xml = "l";
$xml .= "vv"
echo $xml;

이 경우 .=문자열 변수의 이전 버전 끝에 문자열 을 추가 하려고합니다. =는 대입 연산자 일 뿐이므로 원래 코드에서는 변수에 새 문자열 값을 지정합니다.

문자열 "l"및 "vv"를 에코에서만 별도의 줄에 두려면 :

$xml = "l\nvv"
echo $xml;

줄 바꾸기 문자 \n가 자동으로 처리하므로이 경우 여러 개의 문자열이 필요하지 않습니다 .

코드에서 에코 할 때 문자열 "l"및 "vv"를 별도의 줄에 두려면 :

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