PHP의 여러 줄 문자열

고려사항:

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

vv를 에코합니다.SimpleXML 등의 여러 줄 스트링을 하는 이유와 방법은 무엇입니까?



질문에 대한 답변



음.

$xml = "l vv"; 

작동하다.

다음 항목도 사용할 수 있습니다.

$xml = "lnvv"; 

또는

$xml = <<<XML l vv XML; 

코멘트에 근거해 편집:

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

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



PHP에는 Geredoc 문자열과 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은 Leedoc과 비슷하지만 변수를 대체하지는 않습니다.

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

“를 사용할 필요가 없습니다.EOD” 는 시작/종료 식별자로 사용할 수 있습니다.필요한 문자열이 됩니다.

움푹 패인 곳에 주의하세요.PHP 7.3 이전 버전에서는 엔드 식별자EOD들여쓰기를 전혀 해서는 안 됩니다.그렇지 않으면 PHP가 인식하지 않습니다.PHP 7.3 이상에서는EOD공백 또는 탭으로 들여쓸 수 있습니다.이 경우 세레독/nowdoc 문자열의 모든 행에서 들여쓰기가 제거됩니다.




퍼포먼스 면에서 어떻게 쌓이는지는 모르겠지만, 실제로 중요하지 않은 장소에서는 이 포맷이 마음에 듭니다.이것은 PHP 파일이 저장되는 형식이 아니라 rn(CRLF)을 사용하고 있기 때문입니다.

$text="line1rn" .
"line2rn" .
"line3rn"; 

또한 원하는 대로 들여쓸 수 있습니다.




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

에코:

l vv 

PHP_EOL에 관한 문서.




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

<?php ob_start();
?>line1 line2 line3<?php
$xml = ob_get_clean(); 

이 경우 출력 버퍼링은 성능 및 코드 청결도 측면에서 최적의 솔루션이 아닐 수 있지만 참고용으로 남겨둘 가치가 있습니다.