44

我需要回显很多 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 }  ?>';
?>

我该怎么做?

4

7 回答 7

53

您不需要输出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>';
?>
于 2012-09-21T16:59:57.427 回答
51

您不能在这样的字符串中运行 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;
于 2012-09-21T16:58:30.393 回答
22

使用 Heredocs 输出包含变量的多行字符串。语法是...

$string = <<<HEREDOC
   string stuff here
HEREDOC;

“HEREDOC”部分就像引号一样,可以是任何你想要的。结束标记必须是它所在行的唯一内容,即前后没有空格,并且必须以冒号结尾。有关更多信息,请查看手册

于 2012-09-21T17:02:04.880 回答
4

使用冒号表示法

另一种选择是使用if带有冒号 ( :) 和 a 的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>
于 2017-02-13T09:46:22.163 回答
0

代码中的内部单引号集正在杀死字符串。每当您点击单引号时,它都会结束字符串并继续处理。你会想要这样的东西:

$thisstring = 'this string is long \' in needs escaped single quotes or nothing will run';
于 2012-09-21T16:59:58.303 回答
0

使用show_source();PHP的功能。在show_source中查看更多详细信息。我想这是一个更好的方法。

于 2012-09-21T17:11:19.210 回答
0

为此,您必须删除'字符串中的所有字符或使用转义字符。喜欢:

<?php
    echo '<?php
              echo \'hello world\';
          ?>';
?>
于 2012-09-21T17:03:18.803 回答