En 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 \ r \ n 1 John Doe \ r \ n 1 John Doe \ r \ n
J'ai essayé de nombreuses variantes de la \r\n
, mais aucune ne fonctionne. Pourquoi la nouvelle ligne ne se transforme-t-elle pas en nouvelle ligne?
php
string-interpolation
davidjhp
la source
la source
Réponses:
Seules les chaînes entre guillemets doubles interprètent les séquences d'échappement
\r
et\n
comme '0x0D' et '0x0A' respectivement, donc vous voulez:Les chaînes entre guillemets simples , en revanche, ne connaissent que les séquences d'échappement
\\
et\'
.Donc, à moins que vous ne concaténiez la chaîne entre guillemets simples avec un saut de ligne généré ailleurs (par exemple, en utilisant une chaîne entre guillemets doubles
"\r\n"
ou en utilisant unechr
fonctionchr(0x0D).chr(0x0A)
), la seule autre façon d'avoir un saut de ligne dans une seule chaîne entre guillemets est de la saisir littéralement avec votre éditeur:Assurez-vous de vérifier les paramètres de saut de ligne de votre éditeur si vous avez besoin d'une séquence de caractères spécifique (
\r\n
par exemple).la source
PHP_EOL
placeUtilisez la
PHP_EOL
constante prédéfinie :La valeur constante sera définie en fonction des fins de ligne du système d'exploitation où PHP s'exécute. Sous Linux, ce sera
"\n"
; sous Windows, ça le sera"\r\n"
.la source
La commande "echo" en PHP envoie la sortie au navigateur en html brut, donc même si entre guillemets, le navigateur ne l'analysera pas en deux lignes car un caractère de nouvelle ligne en HTML ne veut rien dire. C'est pourquoi vous devez soit utiliser:
lorsque vous utilisez "echo", ou utilisez plutôt fwrite ...
Cela produira une nouvelle ligne HTML à la place de "\ n".
la source
Utilisez la constante PHP_EOL pour obtenir le bon caractère, peu importe la plate-forme.
http://us3.php.net/manual/en/reserved.constants.php
Un exemple d'utilisation simple:
la source
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:
les sorties:
la source
echo "$clientid $lastname\r\n"
Vous devez utiliser ceci:
Vous pourriez également vouloir jeter un œil à PHP EOL .
la source
\r\n
Est en fait pour le 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:affichera:
que la visualisation de la page sera:
Si vous vouliez vraiment dire cela, il vous suffit de corriger le guillemet simple avec le guillemet "":
Sinon, si vous voulez diviser le texte, dans notre exemple «Première ligne» et «Deuxième ligne», vous devez utiliser le code html
<br />
::qui produira:
De plus, il serait plus lisible si vous remplacez le script entier par:
la source
First line Second line
- tout espace, y compris les sauts de ligne, sera compressé en un seul caractère d'espace dans la sortie rendue. En outre,</br>
est tout sauf HTML valide.w3school a proposé de cette façon:
en utilisant cette fonction, vous pouvez le faire .. j'ai essayé d'autres moyens qui ont dit ci-dessus mais ils ne m'aideront pas ..
la source
nl2br()
fonction convertit les caractères de nouvelle ligne en<br />
balise HTML. Cela peut être utile pour créer une nouvelle ligne sur les pages du navigateur, mais pas une nouvelle ligne dans les fichiers texte ou JavaScript, ou pour imprimer sur l'écran ou la console.Pour une raison quelconque, chaque publication posant des questions sur les échappements de nouvelle ligne en PHP ne mentionne pas le cas où le simple fait d'insérer une nouvelle ligne dans des chaînes entre guillemets fera exactement ce que vous pensez:
ex 1.
L'exemple 1 n'imprime clairement pas le résultat souhaité, cependant, bien qu'il soit vrai que vous ne pouvez pas échapper une nouvelle ligne entre guillemets simples, vous pouvez en avoir un:
ex 2.
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éteront correctement la nouvelle ligne, qu'elle soit \ r, \ r \ n ou \ n.
De toute évidence, cette solution n'est pas idéale si vous envisagez de distribuer le fichier par d'autres moyens qu'un navigateur Web et plusieurs systèmes d'exploitation. Dans ce cas, vous devriez voir l'une des autres réponses.
Remarque: en utilisant un éditeur de texte riche en fonctionnalités, vous devriez pouvoir insérer une nouvelle ligne en tant que caractère (s) binaire (s) qui représente une nouvelle ligne sur un système d'exploitation différent de celui qui modifie le fichier. Si tout le reste échoue, il suffit d'utiliser un éditeur hexadécimal pour insérer le caractère ascii binaire.
la source
Utilisez le PHP nl2br pour obtenir les sauts de ligne dans une chaîne de texte.
la source
nl2br
fonction convertit les caractères de nouvelle ligne en<br />
balise HTML. Si la chaîne ne contient aucun caractère de nouvelle ligne, cette fonction ne fera rien! De plus, la question n'est pas de casser une ligne dans un paragraphe en HTML. Il s'agit du caractère de nouvelle ligne !J'ai également essayé cette combinaison dans les guillemets simples et doubles. Mais aucun n'a fonctionné. Au lieu d'utiliser une
\n
meilleure utilisation<br/>
dans les guillemets doubles. Comme ça..la source
Utilisez chr (13) pour le retour chariot et chr (10) pour la nouvelle ligne
la source
Pour toute déclaration d'écho, j'utilise toujours
<br>
des guillemets doubles.la source
Rien ne fonctionnait pour moi.
PHP_EOL
. "\r\n";
Travaille pour moi:
la source
la source