如何在html中回显变量?

时间:2011-06-13 20:42:15

标签: php html if-statement echo

我正在尝试在一些现有代码中包含一个变量,但我的PHP技能非常基础。我环顾四周,可以找到任何我可以适用的解决方案,但我确信这很简单。

原始代码是:

<p class="ad-price"><?php if(get_post_meta($post->ID, 'price', true)) cp_get_price_legacy($post->ID); else cp_get_price($post->ID); ?></p>

并且我试图将其更改为(并且认为应该正常工作)的代码是:

<?php $yourtext = get_post_meta($post->ID, 'cp_pricing_period', TRUE); 
echo "<p class="ad-price"><?php if(get_post_meta($post->ID, 'price', true)) cp_get_price_legacy($post->ID); else cp_get_price($post->ID); ?> $yourtext</p>"; ?>

这些更改显然是错误的,因为它会停止整个文件的工作。任何人都能明白我的错误吗?

由于

4 个答案:

答案 0 :(得分:0)

你必须逃避你的HTML中的双引号

echo "<p class=\"ad-price\"><?php if(get_post_meta($post->ID, 'price', true)) cp_get_price_legacy($post->ID); else cp_get_price($post->ID); ?> $yourtext</p>"; ?>

答案 1 :(得分:0)

在这里,您有一些语法错误(引号未转义且标签错误地打开/关闭)。作为旁注,“扩展”括号使您的代码更具可读性,并且更容易发现错误。

<?php
$yourtext = get_post_meta($post->ID, 'cp_pricing_period', TRUE); 

echo "<p class=\"ad-price\">";
if(get_post_meta($post->ID, 'price', true)) 
{
 cp_get_price_legacy($post->ID);
}
else 
{
  cp_get_price($post->ID); 
}

echo $yourtext."</p>"; 
?>

答案 2 :(得分:0)

两个问题。一,你的echo语句中的引号不匹配:

echo "<p class="ad-price"><?php if(get_post_meta($post->ID, 'price', true))  etc....
               ^-here   ^--here

PHP会将这些额外的引号视为终止字符串,然后想知道这个ad-price指令是什么。这将是语法错误。

同样,一旦你通过转义嵌入式引号来解析字符串:

echo "<p class=\"ad-price\">etc...."

你仍然会因此无法正常工作。 PHP将 NOT 将字符串中的<?php ... ?>视为要执行的PHP代码。它在字符串中,因此它将被视为字符串的一部分,PHP代码将被回显给用户。在这种情况下,你可能已经写了更像这样的东西:

echo '<p class="ad-price">';
if(get_post_meta($post->ID, 'price', true)) {
     echo cp_get_price_legacy($post->ID);
} else { 
     echo cp_get_price($post->ID);
}
echo " $yourtext</p>";

答案 3 :(得分:0)

您需要在此语句中的引号前加上反斜杠:

echo "<p class="ad-price"><?php if(get_post_meta($post->ID, 'price', true))          cp_get_price_legacy($post->ID); else cp_get_price($post->ID); ?> $yourtext</p>"; ?>