web-dev-qa-db-fra.com

PHP - comment créer un caractère de nouvelle ligne?

Dans PHP j'essaie de créer un caractère de nouvelle ligne:

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

Ensuite, j'ouvre le fichier créé dans le Bloc-notes et il écrit littéralement la nouvelle ligne:

1 John Doe 1 John Doe 1 r John Doe

J'ai essayé de nombreuses variantes du \r\n, mais aucune ne fonctionne. Pourquoi la nouvelle ligne ne devient-elle pas une nouvelle ligne?

373
davidjhp

Seul chaînes entre guillemets interprète les séquences d'échappement \r et \n comme étant '0x0D' et '0x0A' respectivement, vous voulez donc:

"\r\n"

chaînes entre guillemets simples , par contre, ne connaissent que les séquences d'échappement \\ et \'.

Donc, sauf si vous concaténez la chaîne entre guillemets simples avec un saut de ligne généré ailleurs (par exemple, en utilisant la chaîne entre guillemets "\r\n" ou en utilisant la fonction _ (chr fonctionchr(0x0D).chr(0x0A)), le seul Une autre façon d'avoir un saut de ligne dans une seule chaîne entre guillemets est de le taper littéralement avec votre éditeur:

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

Assurez-vous de vérifier les paramètres de saut de ligne dans votre éditeur si vous avez besoin d'une séquence de caractères spécifique (\r\n par exemple).

589
Gumbo

Pour une fin de ligne indépendante de la plate-forme, vous pouvez utiliser la constante constante PHP_EOL _ prédéfinie , comme dans:

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

La commande "echo" dans PHP envoie la sortie au navigateur sous forme de code HTML brut. Ainsi, même si le navigateur est en double guillemets, il ne sera pas analysé sur deux lignes car un caractère de nouvelle ligne en HTML ne signifie rien. C'est pourquoi vous devez soit utiliser:

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

lorsque vous utilisez "echo", ou utilisez fwrite ...

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

Cela générera une nouvelle ligne HTML à la place de "\ n".

88
davea0511

Utilisez la constante PHP_EOL pour obtenir le bon personnage, peu importe la plate-forme.

http://us3.php.net/manual/en/reserved.constants.php

Un exemple d'utilisation simple:

<?php
$data = 'First line' . PHP_EOL .
        'Second line' . PHP_EOL .
        'Third line';

file_put_contents("filename.txt", $data);
?>
34
Salvi Pascual

Les chaînes entre guillemets doubles "" interpolent, ce qui signifie qu'elles convertissent les caractères échappés en caractères imprimables.

Les chaînes entre guillemets simples '' sont littérales, ce qui signifie qu'elles sont traitées exactement comme les caractères sont saisis.

Vous pouvez avoir les deux sur la même ligne:

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

les sorties:

$clientid $lastname
1 John Doe
19
Kevin S. Miller

Vous devriez utiliser ceci:

"\n"

Vous pouvez également consulter EOL PHP .

14
Wouter Dorgelo

En fait, \r\n est destiné au côté html de la sortie. Avec ces caractères, vous pouvez simplement créer une nouvelle ligne dans le code HTML pour le rendre plus lisible:

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

affichera:

<html>First line
Second line</html>

que l'affichage de la page sera:

First line Second line

Si vous voulez vraiment dire cela, il vous suffit de corriger la citation unique avec la citation "":

echo "\r\n";

Sinon, si vous voulez diviser le texte, vous devez utiliser le code html suivant: "Première ligne" et "Deuxième ligne": <br />:

First line<br />Second line

cela produira:

First line
Second line

En outre, il serait plus lisible si vous remplacez le script entier par:

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

w3school offert de cette façon:

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

en utilisant cette fonction, vous pouvez le faire..j'ai essayé d'autres moyens que ceux mentionnés ci-dessus mais ils ne m'aideront pas ..

8
amin gholami

Pour une raison quelconque, tous les posts qui posent des questions sur les sauts de ligne insérés dans PHP ne mentionnent pas le cas selon lequel le simple fait d'insérer une nouvelle ligne dans des chaînes entre guillemets simples fera exactement ce que vous pensez:

ex 1.

 echo 'foo\nbar';

L'exemple 1 n'imprime manifestement pas le résultat souhaité. Cependant, s'il est vrai que vous ne pouvez pas échapper à une nouvelle ligne entre guillemets simples, vous pouvez en avoir un:

ex 2.

 echo 'foo
 bar';

L'exemple 2 a exactement le comportement souhaité. Malheureusement, la nouvelle ligne insérée dépend du système d'exploitation. Ce n’est généralement pas un problème, car les navigateurs/serveurs Web interprètent correctement la nouvelle ligne, que ce soit\r,\r\n ou\n.

Évidemment, cette solution n’est pas idéale si vous envisagez de distribuer le fichier par un autre moyen, puis un navigateur Web et plusieurs systèmes d’exploitation. Dans ce cas, vous devriez voir l'une des autres réponses.

remarque: à l'aide d'un éditeur de texte riche en fonctionnalités, vous devriez pouvoir insérer une nouvelle ligne sous forme de caractère binaire représentant une nouvelle ligne sur un système d'exploitation différent de celui qui édite le fichier. Si tout échoue, il suffit d'utiliser un éditeur hexadécimal pour insérer le caractère binaire ascii.

3
user2574384

tilisez le PHP nl2br pour obtenir les nouvelles lignes dans une chaîne de texte ..

$ text = "Manu est un bon garçon. (Entrée) Il sait bien coder.

echo nl2br ($ text);

Résultat.

Manu est un bon garçon.

Il peut bien coder.

2
Manu R S

Utilisez chr (13) pour le retour chariot et chr (10) pour la nouvelle ligne

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

J'ai également essayé cette combinaison entre guillemets simples et doubles. Mais aucun n'a fonctionné. Au lieu d'utiliser \n, utilisez plutôt <br/> entre guillemets. Comme ça..

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

Pour toutes les déclarations echo, j'utilise toujours <br> à l'intérieur des guillemets doubles.

0
Matthew Park