130 votes

Imprimer la nouvelle ligne en PHP entre guillemets simples

J'essaie d'utiliser des guillemets simples autant que possible et j'ai remarqué que je ne peux pas utiliser \n entre guillemets. Je sais que je peux simplement saisir une nouvelle ligne en appuyant sur la touche retour, mais cela modifie l'indentation de mon code.

Y a-t-il un caractère ASCII ou quelque chose que je puisse taper qui produise une nouvelle ligne lorsque j'utilise des guillemets simples ?

0 votes

Si quelqu'un est intéressé par une solution qui fonctionne à la fois pour le navigateur et le terminal (cli, ligne de commande) : stackoverflow.com/a/9665253/1923625

0 votes

Il n'y a honnêtement aucune raison de chercher des guillemets simples. à tout prix . Les deux syntaxes ont une raison d'être. Si vous voulez des variables interpolées ou des séquences échappées, vous êtes supposée pour utiliser des guillemets doubles intentionnellement . Une bonne règle à suivre est la suivante : toujours utiliser des guillemets simples, sauf si vous voulez les guillemets pour une bonne raison . C'est la cohérence mes amis.

151voto

Ignacio Vazquez-Abrams Points 312628

Non, car les guillemets simples empêchent même le remplacement du code hexadécimal.

echo 'Hello, world!' . "\xA";

0 votes

Yessir. Il a répondu en moins de 10 minutes. J'ai dû attendre jusque là pour accepter, puis j'ai oublié haha.

1 votes

Y a-t-il une alternative à cela ? J'ai besoin de l'utiliser dans un preg_replace dans lequel je ne peux pas utiliser de guillemets doubles.

1 votes

Ce n'est pas le bon raisonnement. C'est non parce qu'en PHP vous ne pouvez pas exprimer un caractère de nouvelle ligne entre guillemets simples. Et c'est tout. Lire le manuel aurait pu aider :)

111voto

Cups Points 3929
echo 'hollow world' . PHP_EOL;

Utilisez la constante PHP_EOL pour que le système d'exploitation soit indépendant.

5 votes

Vous ne devriez généralement pas utiliser PHP_EOL car cela rend votre code dépendant du système sur lequel il est exécuté. Par exemple, votre serveur Linux communique avec un autre serveur, puis votre serveur est remplacé par Windows... Ce n'est pas bon.

26voto

Anthony Forloney Points 30083

Si vous êtes echo dans un navigateur, vous pouvez utiliser <br/> avec votre déclaration :

echo 'Will print a newline<br/>';
echo 'But this wont!';

3 votes

Malheureusement, il s'agit plutôt d'un terminal Merci quand même pour votre réponse.

0 votes

Essayez ceci dans un e-mail en texte seul ;)

22voto

leepowers Points 16420

Pour information, il est possible d'insérer des retours à la ligne dans des chaînes de caractères sans guillemets :

printf('Please%1$sgive%1$sme%1$snewlines%1$s', PHP_EOL);

Ce qui peut être utile si votre peur irrationnelle des guillemets ne connaît aucune limite. Bien que je craigne que ce remède soit pire que la maladie.

0 votes

Ce n'est pas une crainte vous obtenez juste de meilleures performances lorsque vous utilisez des guillemets simples, donc j'essaie de les utiliser le plus souvent mais oui, ce n'est pas vraiment une bonne solution pour ce problème, c'est plus de problèmes que ça n'en vaut la peine. Merci.

5 votes

Je ne l'ai pas testé mais je parie que l'utilisation de guillemets doubles est plus rapide que l'utilisation de printf ou la caténation des cordes en général.

0 votes

Ce n'est pas toujours irrationnel, les guillemets peuvent être problématiques, en fonction de ce que vous voulez faire. echo 'For example, I want this to spit out php code.\necho $this->stuff;';

8voto

linuxdev Points 51

Il existe une différence entre l'utilisation des guillemets simples et doubles en PHP.

par exemple 1. echo '$var\n'; 2. echo "$var\n";

  • en 1, PHP imprimera littéralement : $var\n
  • dans 2, PHP devra rechercher l'emplacement en mémoire pour $var et renvoie la valeur à cet endroit. Il devra également analyser le fichier \n comme un nouveau caractère de ligne et d'imprimer ce résultat

Nous sommes dans la gamme des millionièmes de seconde, mais il y a une différence de performance. Je vous recommanderais d'utiliser des guillemets simples chaque fois que possible, même en sachant que vous ne pourrez pas percevoir cette augmentation de performance. Mais je suis un développeur paranoïaque quand il s'agit de performances.

0 votes

Je vous félicite d'avoir essayé de rechercher la meilleure façon de procéder au lieu d'utiliser la solution des guillemets doubles, alias la solution du développeur paresseux.

0 votes

La meilleure façon que je connaisse pour faire ce que vous voulez : echo 'foo', " \n " ;

3 votes

Le moyen rapide de le faire est echo $var + "\n";

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