Многострочная строка PHP с PHP
Мне нужно повторить много PHP и HTML.
Я уже пробовал очевидное, но он не работает:
<?php echo '
<?php if ( has_post_thumbnail() ) { ?>
<div class="gridly-image"><a href="<?php the_permalink() ?>"><?php the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false) ));?></a>
</div>
<?php } ?>
<div class="date">
<span class="day">
<?php the_time('d') ?></span>
<div class="holder">
<span class="month">
<?php the_time('M') ?></span>
<span class="year">
<?php the_time('Y') ?></span>
</div>
</div>
<?php } ?>';
?>
Как я могу это сделать?
Ответы
Ответ 1
Вам не нужно выводить теги php
:
<?php
if ( has_post_thumbnail() )
{
echo '<div class="gridly-image"><a href="'. the_permalink() .'">'. the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false) )) .'</a></div>';
}
echo '<div class="date">
<span class="day">'. the_time('d') .'</span>
<div class="holder">
<span class="month">'. the_time('M') .'</span>
<span class="year">'. the_time('Y') .'</span>
</div>
</div>';
?>
Ответ 2
Вы не можете запустить PHP-код внутри такой строки. Это просто не работает. Кроме того, когда вы "выходите" из PHP-кода (?>
), любой текст вне блоков PHP считается в любом случае, поэтому нет необходимости в инструкции echo
.
Если вам нужно сделать многострочный вывод с помощью фрагмента кода PHP, рассмотрите возможность использования HEREDOC:
<?php
$var = 'Howdy';
echo <<<EOL
This is output
And this is a new line
blah blah blah and this following $var will actually say Howdy as well
and now the output ends
EOL;
Ответ 3
Использовать Heredocs для вывода строк с несколькими линиями, содержащих переменные. Синтаксис...
$string = <<<HEREDOC
string stuff here
HEREDOC;
Часть "HEREDOC" похожа на кавычки и может быть любым, что вы хотите. Конечный тег должен быть единственным на нем, то есть без пробелов до или после, и должен заканчиваться двоеточием. Для получения дополнительной информации ознакомьтесь с руководством.
Ответ 4
Чтобы сделать это, вы должны удалить все '
charachters в своей строке или использовать escape-символ. Как:
<?php
echo '<?php
echo \'hello world\';
?>';
?>
Ответ 5
Внутренний набор одинарных кавычек в вашем коде убивает строку. Всякий раз, когда вы нажимаете одну цитату, она заканчивает строку и продолжает обработку. Вам нужно что-то вроде:
$thisstring = 'this string is long \' in needs escaped single quotes or nothing will run';
Ответ 6
Используйте функцию show_source();
для PHP. Подробнее читайте в show_source. Это лучший метод, я думаю.
Ответ 7
Другой вариант - использовать if
с двоеточием и endif
вместо скобок:
<?php if ( has_post_thumbnail() ): ?>
<div class="gridly-image">
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false) )); ?>
</a>
</div>
<?php endif; ?>
<div class="date">
<span class="day"><?php the_time('d'); ?></span>
<div class="holder">
<span class="month"><?php the_time('M'); ?></span>
<span class="year"><?php the_time('Y'); ?></span>
</div>
</div>