PHP отображает большой блок текста
Я новичок в PHP, и я не могу понять, каковы правила использования функции echo. Например, если мне нужно повторить большой блок css/js, нужно ли добавлять эхо к каждой строке текста или есть способ повторить большой блок кода одним эхом?
Когда я пытаюсь повторить большой блок кода, подобный этому, я получаю ошибку:
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: [email protected]');
});
</script>';
}else {
}
Есть ли лучший способ эхо-передачи больших блоков кода без большой работы (например, добавление эха в каждую строку)?
11 answers
Один из вариантов - выйти из блока php и просто написать HTML.
С вашим кодом, после открывающей фигурной скобки вашего оператора if, завершите PHP:
if (is_single()) { ?>
Затем удалите echo '
и ';
После всего вашего html и css, перед закрытием }
, напишите:
<? } else {
Если текст, который вы хотите написать на странице, является динамическим, это становится немного сложнее, но пока это должно работать нормально.
Синтаксис 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;
Выезд наследственность. Пример:
echo <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
echo <<<"FOOBAR"
Hello World!
FOOBAR;
Также сейчас. но внутри блока синтаксический анализ не выполняется.
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: [email protected]');
Вам нужно будет избежать этих одинарных кавычек в строке PHP, независимо от того, является ли она одной строкой или нет.
Однако есть еще один хороший способ повторить большие строки, и это закрыть PHP заблокируйте и откройте его снова позже:
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: [email protected]');
});
</script>
<?php
}else {
}
Или другая альтернатива, которая, вероятно, лучше для удобства чтения, состоит в том, чтобы поместить весь этот статический HTML на другую страницу и включить() его.
Ваша проблема на самом деле вызвана:
$('input_6').hint('ex: [email protected]');
Вам нужно избежать одинарных кавычек, чтобы быть \'
Однако: Использование Heredoc - гораздо лучшая идея, так как в целом он будет намного чище.
Чтобы расширить ответ @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; ?>
Просто вырвись там, где тебе нужно.
<html>
(html code)
<?php
(php code)
?>
(html code)
</html>
Не используйте сокращенную форму. <?
конфликтует с XML и по умолчанию отключен на большинстве серверов.
Я предпочитаю объединять несколько строк вместе. Это работает как для echo, так и для переменных. Также некоторые IDE автоматически инициализируют новые строки, если вы нажмете enter. Этот синтаксис также генерирует небольшие выходные данные, потому что в строках гораздо меньше пробелов.
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>'
;
Обычно я начинаю с пустой строки, а затем добавляю к ней бит за битом:
$foo = '';
$foo .= 'function sayHello()'
.' alert( "Hello" );'
."}\n";
$foo .= 'function sum( a , b )'
.'{'
.' return a + b ;'
."}\n";
(Пожалуйста, прекратите посты типа "э-э-э. Ты отвечаешь на Вопрос, заданный пять лет назад." Почему нет? Есть много людей, которые ищут ответ. И что плохого в том, чтобы использовать идеи пятилетней давности? Если они не найдут "своего" решения, они откроют новый вопрос. Тогда первые пять ответов будут только "используйте функцию поиска, прежде чем спрашивать!", Поэтому я даю вам другое решение для решения подобных проблем.)
$num = 5;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);
Вы можете добиться этого, напечатав свою строку следующим образом:
<?php $string ='here is your string.'; print_r($string); ?>