web-dev-qa-db-fra.com

Solution élégante pour les sauts de ligne (PHP)

$var = "Hi there"."<br/>"."Welcome to my website"."<br/>;"
echo $var;

Existe-t-il un moyen élégant de gérer les sauts de ligne en PHP? Je ne suis pas sûr des autres langages, mais C++ a eol donc quelque chose de plus lisible et élégant à utiliser

Merci

25
3zzy

J'ai fini par écrire une fonction qui a bien fonctionné pour moi jusqu'à présent:

// pretty print data
function out($data, $label = NULL) {

  $CLI = (php_sapi_name() === 'cli') ? 'cli' : '';

  $gettype = gettype($data);

  if (isset($label)) {
    if ($CLI) { $label = $label . ': '; }
    else { $label = '<b>'.$label.'</b>: '; }
  }

  if ($gettype == 'string' || $gettype == 'integer' || $gettype == 'double' || $gettype == 'boolean') {
    if ($CLI) { echo $label . $data . "\n"; }
    else { echo $label . $data . "<br/>"; }
  }
  else {
    if ($CLI) { echo $label . print_r($data,1) . "\n"; } 
    else { echo $label . "<pre>".print_r($data,1)."</pre>"; }
  }
}


// Usage

out('Hello world!');

$var = 'Hello Stackoverflow!';
out($var, 'Label');
2
3zzy

Pour les sauts de ligne, PHP sous la forme "\n" _ ​​(voir les guillemets doubles ) et PHP_EOL.

Ici, vous utilisez <br />, qui n'est pas un saut de ligne PHP: c'est un saut de ligne HTML.


Ici, vous pouvez simplifier ce que vous avez posté (avec des sauts de ligne HTML)} _: inutile de concaténer les chaînes: vous pouvez tout mettre dans une seule chaîne, comme ceci:

$var = "Hi there<br/>Welcome to my website<br/>";

Ou, en utilisant PHP les sauts de ligne:

$var = "Hi there\nWelcome to my website\n";

Remarque: vous pouvez également consulter la fonction nl2br() , qui insère <br> avant \n.

44
Pascal MARTIN

J'ai défini ceci:

if (PHP_SAPI === 'cli')
{
   define( "LNBR", PHP_EOL);
}
else
{
   define( "LNBR", "<BR/>");
}

Après cela, utilisez LNBR partout où je veux utiliser \n.

6
TheVyom

dans les sauts de ligne php, nous pouvons utiliser PHP_EOL (FIN de LINE) .il fonctionne comme "\ n" mais cela ne peut pas être affiché sur la page ht ml. Parce que nous devons donner du HTML break pour casser la ligne ..

afin que vous puissiez l'utiliser à l'aide de définir

define ("EOL","<br>");

alors vous pouvez l'appeler 

2

Ce n'est pas très "élégant" et c'est un peu un gaspillage, mais si vous tenez vraiment à l'apparence du code, vous pouvez créer votre propre drapeau de fantaisie puis faire une str_replace.

Example:<br />
$myoutput =  "After this sentence there is a line break.<b>.|..</b> Here is a new line.";<br />
$myoutput =  str_replace(".|..","&lt;br />",$myoutput);<br />

ou 

how about:<br />
$myoutput =  "After this sentence there is a line break.<b>E(*)3</b> Here is a new line.";<br />
$myoutput =  str_replace("E(*)3","&lt;br />",$myoutput);<br />

J'appelle la première méthode "style majeur" et la seconde "style chèvre".

1
RandyMorris

Comme dans toute langue, il existe plusieurs façons de le faire.

Comme les répondants précédents l'ont mentionné, "<br/>" n'est pas un saut de ligne au sens traditionnel, mais un saut de ligne HTML. Je ne connais pas de constante PHP intégrée pour cela, mais vous pouvez toujours définir votre propre:

// Something like this, but call it whatever you like
const HTML_LINEBREAK = "<br/>";

Si vous sortez un tas de lignes (d'un tableau de chaînes par exemple), vous pouvez l'utiliser comme suit:

// Output an array of strings
$myStrings = Array('Line1','Line2','Line3');
echo implode(HTML_LINEBREAK,$myStrings);

Cependant, en règle générale, évitez de coder en dur le code HTML dans vos instructions echo/print PHP. Si vous pouvez conserver le code HTML en dehors du code, cela rend les choses beaucoup plus flexibles et faciles à gérer à long terme.

0
mkgrunder

Comme vous exportez vers le navigateur, vous devez utiliser <br/>. Sinon, il y a \n et \r ou les deux combinés.

0
Sarfraz