将html插入PHP返回

My PHP is failing me. I'm trying to put a div around an element in a function. Here is the original code:

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

I want to put a div around the $currency.

I've tried changing this line:

return $currency . ' ' . $lowestPrice;

to this:

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

However that actually outputs the div tags as text on the page. Can someone tell me how to add the divs so they render as html?

UPDATE:

Here is the entire function:

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;
    }

}

The result of that function is called with the following code:

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

If I use echo instead of return like this:

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

I lose all the html above. I.E. What was the following:

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

Becomes this:

<div>R</div> 56200

(where R is $currency and 56200 is $lowestPrice)

Hope that's not painfully convoluted.

This will have something to do with what you are doing with the return

I imagine if you did this:

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

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

It would work.

Is your code the end of a function?

Try using the :

{$lp|escape:false}

I would simply place the div in the $currency variable, so it will be added upon return. I would change this line of code:

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

to this:

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

or another method:

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

This way you are defining the html in the variable and not in the return. This is not tested, but it is the way I tend to code. :) Hope it helps!

Also one more thing, it is a bit of controversy among programmers, but I also recommend using single quotes when defining html in php.