2011-06-13 50 views
0

我想在一些現有的代碼中包含一個變量,但我的PHP技能是相當基礎的。我環顧四周,可以找到任何我可以作爲解決這個問題的方法,儘管我確信它非常簡單。如何在html中迴應變量?

原始代碼是:

<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

你逃脫雙引號在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>"; ?> 
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>"; 
?> 
0

兩個問題。一,你有不匹配的報價您的迴音語句中:

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將不是看到<?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>"; 
+0

感謝馬克·B.這完美地工作(一旦我記得關閉PHP語句?>那就是) – 2011-06-13 20:59:46

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>"; ?>