183 votes

Chaînes de caractères multi-lignes en PHP

Pensez-y :

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

echo $xml;

Cela donnera l'écho suivant vv . Pourquoi et comment puis-je faire des chaînes de caractères de plusieurs lignes pour des choses comme SimpleXML etc.

332voto

Second Rikudo Points 59550

Bien,

$xml = "l
vv";

Travaux.

Vous pouvez également utiliser les éléments suivants :

$xml = "l\nvv";

ou

$xml = <<<XML
l
vv
XML;

Modifier en fonction du commentaire :

Vous pouvez concaténer des chaînes de caractères à l'aide de la fonction .= opérateur.

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

194voto

Dan Fabulich Points 6143

PHP dispose des chaînes Heredoc et Nowdoc, qui sont la meilleure façon de gérer les chaînes multi-lignes en 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;

Un Nowdoc est comme un Heredoc, mais il ne remplace pas les variables.

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

Attention, le jeton de fin EOD ne doit pas être indentée du tout, ou PHP ne la reconnaîtra pas. De plus, vous n'avez pas besoin d'utiliser " EOD " ; il peut s'agir de n'importe quelle chaîne de caractères.

12voto

eselk Points 1796

Je ne sais pas comment il se comporte en termes de performances, mais pour les endroits où cela n'a pas vraiment d'importance, j'aime ce format parce que je peux être certain qu'il utilise \r\n (CRLF) et non le format dans lequel mon fichier PHP est enregistré.

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

Il me permet également d'indenter comme je le souhaite.

11voto

Ryan Points 10831
$xml="l" . PHP_EOL;
$xml.="vv";
echo $xml;

L'écho de Will :

l
vv

Documentation sur PHP_EOL .

9voto

XaviEsteve Points 696

Une autre solution consiste à utiliser mise en mémoire tampon des sorties vous pouvez collecter tout ce qui est sorti/échoqué et le stocker dans une variable.

<?php
ob_start(); 

?>line1
line2
line3<?php 

$xml = ob_get_clean();

Veuillez noter que la mise en mémoire tampon de la sortie n'est peut-être pas la meilleure solution en termes de performance et de propreté du code pour ce cas précis, mais il vaut la peine de la laisser ici pour référence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X