7
votes

Newline en ligne de commande PHP

Je suis un script PHP via la ligne de commande et essayez d'obtenir la sortie imprimée sur de nouvelles lignes. J'ai essayé tous les suspects habituels ( \ n, \ r, \ l ) mais rien ne fonctionne. J'accède à mon serveur Ubuntu en utilisant Putty sur SSH. Voici mon code:

echo ($ string. '\ r');


0 commentaires

6 Réponses :


27
votes

Vous devez utiliser des guillemets doubles:

echo($string."\r");
             ^  ^


10 commentaires

Wow, je n'avais aucune idée. Merci! Quelqu'un d'autre a également mentionné à l'aide de la constante php_eol (mais a ensuite supprimé leur réponse - je ne sais pas pourquoi). Les deux sont de grandes solutions. Merci!


Php_eol est pratique si le fichier que vous produisez est ciblé pour une utilisation «locale». Mais si vous êtes (disons) dans une zone Windows, produisant un fichier pour une cible UNIX, puis PHP_EOL est inutile, car il contiendra les caractères Windows EOL.


Je vois. Merci pour la clarification.


@danielfaraday: Lorsque vous avez essayé d'imprimer cela avec des guillemets simples ... N'as-tu pas eu de littéral \ r ? Cela aurait dû être votre allusion.


La constante PHP_EOL est censée être compatible entre la plate-forme croisée. Exemple: si vous utilisez php_eol sur une distribution Linux, il est défini comme "\ n", sur une distro de Windows, il est défini comme "\ r \ n", sur Mac Distro, il est défini comme "\ r" ressource: github.com/php-src/blob/master/main/php .h


@Marcb Oui La "valeur" est spécifique à la plate-forme, mais la constante de php_eol n'est pas. Il est variable en fonction de la plate-forme, le script d'appel est exécuté. Tels que la rédaction d'une application ou d'un cadre à distribuer pour exécuter et être "compatible" avec d'autres plates-formes. Enregistrement d'un fichier texte sur une plate-forme à lire sur une autre plate-forme, il faut s'attendre à ce que le fichier de caractères newline soit créé sur la plate-forme que le fichier texte a été généré. Faire de la plate-forme de votre application spécifique non à la constante php_eol.


Vous ne comprenez pas ce que je dis. Oui, le code PHP à l'aide de php_eol sera "multi-plate-forme". Mais Fichiers Vous générez avec ce code PHP ne sera pas.


Je comprends que vous plaignez que les nouvelles lignes de fichiers statiques ne sont pas multiples. J'indique que echo php_ebol retournerait le personnage de la nouvelle ligne de la plate-forme qui est exécuté. C'est pourquoi j'ai défini chaque valeur de retour basée sur la plate-forme d'exécution et liée au fichier source qui détermine la nouvelle ligne à dessiner en fonction de la plate-forme.


exactement. Vous avez un script PHP qui génère une sorte de fichier .txt. Vous envoyez ensuite ce fichier .txt à quelqu'un d'autre, et ils sont sur une plate-forme différente avec différents caractères EOL. C'est là que php_eol est inutile. Le destinataire n'a pas de php, ils disposent d'un fichier texte et de ce fichier contient les caractères EOL de la personne qui a effectué le fichier.


À ce point, php_eol n'est pas placé dans le fichier texte, une nouvelle ligne est ... Je n'ai jamais affirmé que cela génère des nouvelles lignes compatibles de plate-forme multiplate-forme (rien ne fait). J'ai dit "la constante php_eol est censée être compatible entre la plate-forme croisée", sur la plate-forme dont elle est utilisée. Echo "\ n" est spécifique à Linux et sera toujours. ECHO PHP_EOL n'est pas spécifique à une plate-forme mais est compatible avec toutes les plates-formes dont elle est exécutée. La compatibilité du fichier résultant est hors de propos.



3
votes

Utilisez des guillemets doubles echo "line suivant \ n";


0 commentaires

20
votes

Vous pouvez concaténer le php_eol constante. XXX


1 commentaires

Ceci est plus flexible à utiliser dans n'importe quel système d'exploitation. "\ r" donne des lignes vides lorsque nous utilisons chat .



-1
votes

php il y a plusieurs manières. Mais je pense que c'est ce dont vous avez besoin xxx


0 commentaires

1
votes

Pour le script de ligne de commande, il est recommandé d'utiliser php_eol .

Veuillez vous reporter http://php.net/manual/fr/resserved.constants.php xxx

Il effectue votre script exécutable à travers la plate-forme.


0 commentaires

0
votes

La réponse acceptée ne fonctionne pas pour moi. mon essai est "\ r \ n" xxx

la sortie cmd sera:

Ceci est un texte avant la nouvelle ligne < p> texte dans la nouvelle ligne


0 commentaires