语法帮助echo html和变量

时间:2011-05-19 10:22:20

标签: php html variables syntax

我有这个代码(见下文),我无法回应变量。在第5行是一个回声,在回声中是一个html的加载(我已经转义了引号)和一堆变量。我无法让变量在主回声中回显。

更新: 还有一个需要考虑的onclick。

<?php
   if(
       in_array("Branding", get_field('categories')) && $grid_title == "Branding"
   ){
     echo "
        <div class=\"grid-box\" onclick=\"location.href='<?php echo get_page_link($post->ID) ?>';\" style=\"cursor: pointer;\">
        <div class=\"phase-1\">
           <img class=\"grid-image\" src=\"<?php echo $fields->thumb_image; ?>\" alt=\"<?php echo $fields->company_name; ?>\" height=\"152\" width=\"210\" />
           <div class=\"grid-heading\">
                <h2><?php echo $fields->company_name; ?></h2>
                <h3><?php echo implode(', ',get_field('categories'));?></h3>
            </div> 
        </div>
        <div class=\"phase-2\">
            <div class=\"grid-info\">
                <h4><?php echo $fields->project_name; ?></h4>
                <p><?php echo $fields->description; ?></p>
            </div>
            <div class=\"grid-heading-hover\">
                <h2><?php echo $fields->company_name; ?></h2>
                <h3><?php echo implode(', ',get_field('categories'));?></h3>
            </div> 
        </div>
    </div>
     ";
   }
   ?>

4 个答案:

答案 0 :(得分:3)

你不能在echo中使用echo,你只需要正确地连接你的字符串:

     $Content =  "
        <div class=\"grid-box\" onclick=\"location.href='" . get_page_link($post->ID). "';\" style=\"cursor: pointer;\">
        <div class=\"phase-1\">
           <img class=\"grid-image\" src=\"" . $fields->thumb_image . "\" alt=\"" . $fields->company_name. "\" height=\"152\" width=\"210\" />
           <div class=\"grid-heading\">
                <h2> " . $fields->company_name . "</h2>
                <h3>" . implode(', ',get_field('categories')) . "</h3>
            </div> 
        </div>
        <div class=\"phase-2\">
            <div class=\"grid-info\">
                <h4>" . $fields->project_name . "</h4>
                <p>" . $fields->description . "</p>
            </div>
            <div class=\"grid-heading-hover\">
                <h2>" . $fields->company_name . "</h2>
                <h3>" . implode(', ',get_field('categories')). "</h3>
            </div> 
        </div>
    </div>";
  echo $Content;

答案 1 :(得分:2)

你似乎在这里有一点误会。

在PHP中,您可以通过

输出HTML
  • <?php...?>之外编写简单的HTML,并可能在
  • 中插入一些PHP代码
  • 使用echo / print之类的内容输出包含HTML的PHP string

但你不能混淆两者。

所以这不好:

echo "... src=\"<?php echo $fields->thumb_image; ?>\" ...";

因为这是一个字符串,并且在字符串中无法打开<?php部分。你应该做这样的事情:

echo "... src=\"{$fields->thumb_image}\" ...";

这是在字符串中插入PHP变量的一种很酷的方式。

答案 2 :(得分:1)

像这样的东西

echo " ... <?php ... ?> ...";

无效。

相反,你可以“突破”,如:

...
?>
<div class="grid-box" onclick="location.href='<?php echo get_page_link($post->ID) ?>';" style="cursor: pointer;">
<div class="phase-1"> ... <?php

或使用s / printf

printf(
    '<div class="grid-box" onclick="location.href='%s';" style="cursor: pointer;">',
    get_page_link($post->ID)
);

或者使用字符串连接:

echo "html ...", get_page_link($post->ID), "some more html...";

或者使用某种模板代码。

答案 3 :(得分:0)

在if之后关闭php标签,然后在结束分号前打开它。

if(
       in_array("Branding", get_field('categories')) && $grid_title == "Branding"
   ){
   ?>
        <div class="grid-box" onclick="location.href='<?php echo get_page_link($post->ID) ?>';" style="cursor: pointer;">
        <div class="phase-1">
           <img class="grid-image" src="<?php echo $fields->thumb_image; ?>" alt="<?php echo $fields->company_name; ?>" height="152" width="210" />
           <div class="grid-heading">
                <h2><?php echo $fields->company_name; ?></h2>
                <h3><?php echo implode(', ',get_field('categories'));?></h3>
            </div> 
        </div>
        <div class="phase-2">
            <div class="grid-info">
                <h4><?php echo $fields->project_name; ?></h4>
                <p><?php echo $fields->description; ?></p>
            </div>
            <div class="grid-heading-hover">
                <h2><?php echo $fields->company_name; ?></h2>
                <h3><?php echo implode(', ',get_field('categories'));?></h3>
            </div> 
        </div>
    </div>
   <?php
   }
   ?>