将html插入PHP返回

时间:2015-01-15 09:29:38

标签: php html

我的PHP让我失望了。我试图在函数中放置一个div元素。这是原始代码:

if ($withCurrency) {
    $currency = (isset($GLOBALS['aitThemeOptions']->directory->currency)) ? $GLOBALS['aitThemeOptions']->directory->currency : '';
    return $currency . ' ' . $lowestPrice;
}

我想在$currency附近加一个div。

我尝试更改此行:

return $currency . ' ' . $lowestPrice;

到此:

return "<div>" . $currency . "</div> " . $lowestPrice;

然而,它实际上将div标签作为文本输出到页面上。有人能告诉我如何添加div,使它们呈现为html?

更新

以下是整个功能:

function getTourPrice($tourId, $withCurrency = true) {

    $lowestPrice = false;
    $offers = getTourOffers($tourId);
    // first get price from special offers
    foreach ($offers as $offer) {
        if ((isset($offer->options['special'])) && ((!$lowestPrice) || floatval($offer->options['price']) < $lowestPrice)) {
            $lowestPrice = floatval($offer->options['price']);
        }
    }
    // if special price isn't available then get price from normal offers
    if (!$lowestPrice) {
        foreach ($offers as $offer) {
            if ((!$lowestPrice) || (floatval($offer->options['price']) < $lowestPrice)) {
                $lowestPrice = floatval($offer->options['price']);
            }
        }
    }
    if (!$lowestPrice) return false;

    if ($withCurrency) {
        $currency = (isset($GLOBALS['aitThemeOptions']->directory->currency)) ? $GLOBALS['aitThemeOptions']->directory->currency : '';
        return $currency . ' ' . $lowestPrice;
    } else {
        return $lowestPrice;
    }

}

使用以下代码调用该函数的结果:

{var $lp = getTourPrice($post->id)}
                {if $lp}<div class="item-price"><span><span><span class="from">From</span>{$lp}</span></span></div>{/if}

如果我使用echo而不是像这样返回:

echo "<div>" . $currency . "</div> " . $lowestPrice;

我丢失了上面的所有HTML。 I.E.以下是什么:

<div class="item-price"><span><span><span class="from">From</span>{$lp}</span></span></div>

成为这个:

<div>R</div> 56200

(其中R是$ currency,56200是$ lowestPrice)

希望这不会令人痛苦。

3 个答案:

答案 0 :(得分:0)

这将与您使用返回

所做的事情有关

我想如果你这样做了:

    if ($withCurrency) {
        $currency = 
        (isset($GLOBALS['aitThemeOptions']->directory->currency)) ?
        $GLOBALS['aitThemeOptions']->directory->currency : 
        '';

        echo "<div>" . $currency . "</div> ";
    }

它会起作用。

您的代码是否是函数的结尾?

答案 1 :(得分:0)

尝试使用:

{$lp|escape:false}

答案 2 :(得分:0)

我只是将div放在$ currency变量中,因此它会在返回时添加。我会改变这行代码:

$currency = (isset($GLOBALS['aitThemeOptions']->directory->currency)) ? $GLOBALS['aitThemeOptions']->directory->currency : '';

到此:

$currency = (isset($GLOBALS['aitThemeOptions']->directory->currency)) ? '<div>'.$GLOBALS['aitThemeOptions']->directory->currency.'</div>' : '';

或其他方法:

$currency = '<div>'.$currency.'</div>';

这样您就可以在变量中定义html,而不是在返回中定义html。这没有经过测试,但这是我倾向于编码的方式。 :)希望它有所帮助!

还有一件事,它在程序员中引起了一些争议,但我也建议在php中定义html时使用单引号。