开发者

Syntax help with echo html and variables

开发者 https://www.devze.com 2023-03-06 19:39 出处:网络
I have this code (see below) that I\'m having trouble echoing the variables out. On the 5th line is an echo, within that echo is a load of html (which I\'ve escaped the quotation marks) and a load of

I have this code (see below) that I'm having trouble echoing the variables out. On the 5th line is an echo, within that echo is a load of html (which I've escaped the quotation marks) and a load of variables. I can't get the variables to echo out within the main echo.

Update: Also within there is an onclick that needs to be taken into account.

<?php
   i开发者_开发知识库f(
       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>
     ";
   }
   ?>


You can't use echo within an echo, you just need to concatenate your strings properly like so:

     $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;


You seem to have a little misunderstanding here.

In PHP you can output HTML either by

  • writing simple HTML outside <?php...?>, and possibly inserting some PHP code inside
  • using something like echo / print to output a PHP string which includes HTML

But you cannot mix up the two.

So this is not good:

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

Because this is a string, and in a string you can not open a <?php section. You should do something like this instead:

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

which is one of the cool ways to insert PHP variables inside a string.


Something like this

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

will not work.

Instead you could "break in and out" of php, like:

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

Or use s/printf

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

Or use string concatenation:

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

Or use some kind of templating code.


Just close the php tag after the if and open it before the closing semi-colon.

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
   }
   ?>
0

精彩评论

暂无评论...
验证码 换一张
取 消