我正在尝试在一些现有代码中包含一个变量,但我的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>"; ?>
这些更改显然是错误的,因为它会停止整个文件的工作。任何人都能明白我的错误吗?
由于
答案 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>"; ?>