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

是否有一种优雅的方式来处理PHP中的换行符?我不确定其他语言,但是C++有eol,所以它更具可读性和优雅性。优雅的换行符(PHP)

感谢

+0

可能重复[如何从字符串中删除换行符(无字符!)?](http://stackoverflow.com/questions/10757671/how-to-remove-line-breaks-no-characters-from字符串) – kenorb 2015-03-03 00:28:06

回答

1

我最后写的是为我好,到目前为止工作的函数:

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

因为你是输出到浏览器,你必须使用<br/>。否则有\n\r或二者兼有。

41

对于换行符,PHP为"\n"(见double quote stringsPHP_EOL

在这里,您使用的是<br />,这不是PHP换行符:它是一个HTML换行符。


在这里,你可以简化你张贴(用HTML换行符):无需串并置:你可以把一切都在短短的一个字符串,像这样:

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

或者,使用PHP换行符:

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

注意:您可能也想看看的nl2br()功能,这之前插入。

+2

'nl2br()'实际上不会*将换行符转换为'
'。它的作用是在所有换行符之前插入'
'或'
'来返回给定的字符串。 – 2014-01-03 12:42:46

+0

当我的PHP返回“你好。\ n欢迎。”在一个API调用中,然后我将输出记录在我的应用程序中,它显示为'你好。\ nWelcome.',与\ n完好无损(未转换为换行符)。如何让php插入实际\ n换行符char返回结果? (哦!这是否与结果是'json_encode'-ed有关?男人,这很烦人!好的,我该如何解决*那个* ??)谢谢! – Olie 2015-04-22 15:53:24

+1

@Olie - json_encode应该没关系。仔细检查你是否使用双引号。当\ n在单引号内时,它将被逐字解释。 – azoundria 2016-02-25 11:22:32

0

那么,与任何语言一样,有几种方法可以做到这一点。

正如前面的应答者提到,“<br/>"不是传统意义上的断行,这是一个HTML换行符我不知道一个内置的PHP常数这一点,但你总是可以定义自己:

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

如果你输出一堆线(例如从字符串数组),你可以使用这种方式:

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

但总的来讲我想说避免硬编码的HTML在你的PHP echo/print语句中,如果你能保留代码之外的HTML,从长远来看,它使事情变得更加灵活和可维护。

0

不是非常“优雅”,有点浪费,但如果你真的在乎代码看起来像什么,你可以制作自己的花旗,然后做一个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 /> 

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

我所说的第一种方法 “中指风格”,第二个 “goatse风格”。

-1

\ n没有为我工作。 \ n出现在我发送的电子邮件的正文中。这就是我解决这个问题的方法。

str_pad($ input,990); //这样空格就会填充到990的位置。

6

我已经定义了这一点:

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

这种使用LNBR地方我想用\n后。

2

在PHP换行符中,我们可以使用PHP_EOL(LINE结尾)。它以“\ n”形式工作,但它不能在html页面上显示。因为我们必须给HTML断点以打破行。

,所以你可以使用它使用定义

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

,那么你可以把它叫做