PHP回声一大块文字

林新来的PHP,我不知道什么规则是使用回声function。 例如,如果我需要回显一大块css / js,是否需要将echo添加到每行文本,或者是否有一种方法可以用单个回显来回显大块代码?

当我尝试回显一个像这样的大块代码,我得到一个错误:

if (is_single()) { echo '<link type="text/css" rel="stylesheet" href="http://jotform.com/css/styles/form.css"/><style type="text/css"> .form-label{ width:150px !important; } .form-label-left{ width:150px !important; } .form-line{ padding:10px; } .form-label-right{ width:150px !important; } body, html{ margin:0; padding:0; background:false; } .form-all{ margin:0px auto; padding-top:20px; width:650px !important; color:Black; font-family:Verdana; font-size:12px; } </style> <link href="http://jotform.com/css/calendarview.css" rel="stylesheet" type="text/css" /> <script src="http://jotform.com/js/prototype.js" type="text/javascript"></script> <script src="http://jotform.com/js/protoplus.js" type="text/javascript"></script> <script src="http://jotform.com/js/protoplus-ui.js" type="text/javascript"></script> <script src="http://jotform.com/js/jotform.js?v3" type="text/javascript"></script> <script src="http://jotform.com/js/location.js" type="text/javascript"></script> <script src="http://jotform.com/js/calendarview.js" type="text/javascript"></script> <script type="text/javascript"> JotForm.init(function(){ $('input_6').hint('ex: myname@example.com'); }); </script>'; }else { } 

有没有更好的方式来回声大块的代码没有很多的工作(例如添加回声每行)?

一个select是跳出php块,只写HTML。

用你的代码,在if语句的大括号之后,结束PHP:

 if (is_single()) { ?> 

然后删除echo '';

毕竟你的HTML和CSS,在结束}之前,写:

 <? } else { 

如果你想要写入页面的文本是dynamic的,它会变得有点棘手,但现在这应该工作正常。

Heredoc语法可能非常有用:

 // start the string with 3 <'s and then a word // it doesn't have to be any particular string or length // but it's common to make it in all caps. echo <<< EOT in here is your string it has the same variable substitution rules as a double quoted string. when you end it, put the indicator word at the start of the line (no spaces before it) and put a semicolon after it EOT; 

看看heredoc 。 例:

 echo <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD; echo <<<"FOOBAR" Hello World! FOOBAR; 

这也是nowdoc,但没有parsing在块内完成。

 echo <<<'EOD' Example of string spanning multiple lines using nowdoc syntax. EOD; 

男人,PHP不是perl!
PHP可以从HTML中逃脱:) http://www.php.net/manual/en/language.basic-syntax.phpmode.php

 if (is_single()) { //now we just close PHP tag ?> </style> <script> <blah blah blah> <?php //open it back. here is your PHP again. easy! } ?> 

我想知道为什么这么多人坚持丑陋的heredoc。

你的问题其实是由

 $('input_6').hint('ex: myname@example.com'); 

你需要将单引号转义为\'

但是:使用Heredoc是一个更好的主意,因为它总体上会更清洁。

对包含换行符的文本进行回声很好,对于可以一次回显的文本或行数没有限制(除了可用内存)。

代码中的错误是由string中出现的非转义单引号引起的。

看到这一行:

 $('input_6').hint('ex: myname@example.com'); 

您需要在PHPstring中跳过这些单引号,无论是否为单行。

不过,还有一种很好的方法来回应大string,那就是closuresPHP块,然后再打开它:

 if (is_single()) { ?> <link type="text/css" rel="stylesheet" href="http://jotform.com/css/styles/form.css"/><style type="text/css"> .form-label{ width:150px !important; } .form-label-left{ width:150px !important; } .form-line{ padding:10px; } .form-label-right{ width:150px !important; } body, html{ margin:0; padding:0; background:false; } .form-all{ margin:0px auto; padding-top:20px; width:650px !important; color:Black; font-family:Verdana; font-size:12px; } </style> <link href="http://jotform.com/css/calendarview.css" rel="stylesheet" type="text/css" /> <script src="http://jotform.com/js/prototype.js" type="text/javascript"></script> <script src="http://jotform.com/js/protoplus.js" type="text/javascript"></script> <script src="http://jotform.com/js/protoplus-ui.js" type="text/javascript"></script> <script src="http://jotform.com/js/jotform.js?v3" type="text/javascript"></script> <script src="http://jotform.com/js/location.js" type="text/javascript"></script> <script src="http://jotform.com/js/calendarview.js" type="text/javascript"></script> <script type="text/javascript"> JotForm.init(function(){ $('input_6').hint('ex: myname@example.com'); }); </script> <?php }else { } 

或者,另一种可能更好的方法是将所有静态HTML放到另一个页面中,并包含()它。

为了扩展@ hookedonwinter的答案,下面是一个替代(在我看来更干净)语法:

 <?php if (is_single()): ?> <p>This will be shown if "is_single()" is true.</p> <?php else: ?> <p>This will be shown otherwise.</p> <?php endif; ?> 

我更喜欢连接多个string。 这适用于echo和variables。 还有一些IDE自动初始化新行,如果你按回车。 这个语法也会产生很小的输出,因为string中的空格非常less。

 echo '' .'one {' .' color: red;' .'}' ; $foo = '' .'<h1>' . $bar . '</h1>' // insert value of bar .$bar // insert value of bar again ."<p>$bar</p>" // and again ."<p>You can also use Double-Quoted \t Strings for single lines. \n To use Escape Sequences.</p>" // also you can insert comments in middle, which aren't in the string. .'<p>Or to insert Escape Sequences in middle '."\n".' of a string</p>' ; 

通常情况下,我从一个空string开始,然后一点一滴追加到它:

 $foo = ''; $foo .= 'function sayHello()' .' alert( "Hello" );' ."}\n"; $foo .= 'function sum( a , b )' .'{' .' return a + b ;' ."}\n"; 

(请停止像“呃”这样的post,你回答了一个五岁的老问题“为什么不呢?有很多人在寻找答案,而使用五年前的想法有什么不对?如果他们找不到”他们的“解决scheme他们会打开一个新的问题,然后前五个答案只是“在你问之前使用searchfunction!”所以,我给你另一个解决scheme来解决这样的问题。

 $num = 5; $location = 'tree'; $format = 'There are %d monkeys in the %s'; echo sprintf($format, $num, $location); 

只要发现你需要的地方。

 <html> (html code) <?php (php code) ?> (html code) </html> 

不要使用缩短forms。 <? 与XML冲突,并在大多数服务器上被默认禁用。

你可以通过打印你的string来实现:

 <?php $string ='here is your string.'; print_r($string); ?>