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); ?>