2010-04-28 23 views
24
$var = "Hi there"."<br/>"."Welcome to my website"."<br/>;" 
echo $var; 

¿Existe una forma elegante de manejar saltos de línea en PHP? No estoy seguro acerca de otros lenguajes, pero C++ tiene eol entonces algo que es más legible y elegante de usar?Solución elegante para saltos de línea (PHP)

Gracias

+0

posible duplicado de [Cómo eliminar saltos de línea (sin caracteres) de la cadena?] (Http://stackoverflow.com/questions/10757671/how-to-remove-line-breaks-no-characters-from -the-string) – kenorb

Respuesta

1

terminé escribiendo una función que me ha funcionado bien hasta ahora:

// 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'); 
0

Debido a que está dando salida al navegador, usted tiene que utilizar <br/>. De lo contrario, hay \n y \r o ambos combinados.

41

Para saltos de línea, PHP como "\n"(ver double quote strings) y PHP_EOL.

Aquí está utilizando <br />, que no es un salto de línea PHP: es un salto de línea HTML.


Aquí, se puede simplificar lo que usted envió (con saltos de línea HTML): sin necesidad de las concatenaciones cuerdas: se puede poner todo en una sola cadena, así:

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

O, utilizando saltos de línea de PHP:

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

Nota: es posible que también desee echar un vistazo a la función nl2br(), que inserta <br> antes \n.

+2

'nl2br()' en realidad * no convierte * las líneas nuevas a '
'. Lo que hace es devolver la cadena dada con '
' o '
' insertado antes de todas las nuevas líneas. –

+0

Cuando mi php devuelve "Hola. \ NBienvenido". en una llamada API, luego registro la salida en mi aplicación, se muestra como 'Hola allí. \ nBienvenido.', con \ n intacto (no convertido a nueva línea). ¿Cómo obtengo php para insertar una nueva \ n nueva línea? char en el resultado de retorno? (¡Oh! ¿Tiene que ver con el hecho de que el resultado es 'json_encode' -ed? Hombre, eso es molesto! Ok, cómo arreglar * ese * ??) ¡Gracias! – Olie

+1

@Olie - json_encode no debería importar. Verifica que estés usando comillas dobles. Cuando \ n está dentro de comillas simples, se interpretará literalmente. – azoundria

0

Bueno, al igual que con cualquier idioma hay varias formas de hacerlo.

Como han mencionado que responden anteriores, "<br/>" no es un salto de línea en el sentido tradicional, es un salto de línea HTML no sé de un sistema incorporado en PHP constante para esto, pero siempre se puede definir su propia:.

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

Si va a dar salida a un montón de líneas (de una matriz de cadenas, por ejemplo), puede usarlo de esta manera:

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

Sin embargo, en términos generales, diría evitar duro de codificación HTML dentro de sus declaraciones de PHP eco/impresión. Si puede mantener el HTML fuera del código, hace que las cosas sean mucho más flexibles y mantenibles a largo plazo.

0

No es muy "elegante" y es un desperdicio, pero si realmente te importa cómo se ve el código, podrías hacer tu propia bandera elegante y luego hacer un cambio.

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 /> 

o

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 /> 

que llamo el primer método "estilo dedo medio" y el segundo "estilo Goatse".

-1

\ n no funcionó para mí. los \ n aparecen en el texto del cuerpo del correo electrónico que estaba enviando ... así es como lo resolví.

str_pad ($ input, 990); // para que los espacios se llenen al 990.

6

he definido esto:

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

Después de este uso LNBR donde quiera utilizar \n.

2

en los saltos de línea php podemos usar PHP_EOL (FIN DE LÍNEA) .it funciona como "\ n" pero no se puede mostrar en la página ht ml. Porque tenemos que dar HTML break para romper la línea ...

para que pueda usarlo usando definir

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

entonces se le puede llamar

Cuestiones relacionadas