2011-05-19 22 views
1

我有這段代碼(見下文),我無法回顯變量。在第五行是一個回聲,在回聲是一個負載的HTML(我已經逃過了引號)和一個負載的變量。我無法讓變量在主回聲中回顯。使用echo 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> 
    "; 
    } 
    ?> 

回答

3

不能回波中使用的回聲,你只需要正確拼接你的字符串,像這樣:

 $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

像這樣的事情

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

將無法​​正常工作。

相反,你可以 「打破進出」 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..."; 

或者使用某種模板代碼。

+0

+1爲了做同樣的幾個好方法('printf'很棒) – kapa 2011-05-19 10:32:37

2

你似乎在這裏有一個小誤會。

在PHP可以輸出HTML或者通過

  • 編寫簡單的HTML以外<?php...?>,並使用類似echo/print以輸出PHP string,其包括HTML
可能插入內部
  • 一些PHP代碼

    但是你不能混淆兩者。

    因此,這是不好:

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

    因爲這是一個字符串,字符串中不能打開一個<?php部分。你應該做這樣的事情,而不是:

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

    這是涼爽的方式插入一個字符串內的PHP變量之一。

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