从数据库中提取和输出php标签

时间:2013-06-25 21:44:53

标签: php mysql

我正在尝试创建动态的常见问题解答页面。我有以下phtml示例:

<div id="faq">
    <!-- Start FAQ "Navigation" -->
    <div class="faqBox">
        <? foreach($this->aFAQ as $k => $val) : ?>  
            <?= ($val['mQuestion']); ?>
            <?= ($val['mAnswer']); ?>
        <? endforeach; ?>
    </div>
</div>

其输出如下:

如需其他付款方式 - 支票或汇票,请通过iBrandingLevel == 2 ? $this->oStore->getSuppPhone()." Monday to Friday ".$this->oStore->getSuppHoursOpen()." - ".$this->oStore->getSuppHoursClose()." ".$this->oStore->getSuppTimeZone() : "(888) 455-3237 x2 from Monday to Friday 8:00am - 4:30pm MST/Arizona."; ?>

与我们联系

上面的文字只是第一个$ val ['mAnswer'](我没有包含问题,因为它正常工作)。

html正在渲染,但是虚拟的却不是。正在删除<??>,只显示代码。有没有解决这个问题?或者我的方法根本就是错误的。

谢谢

4 个答案:

答案 0 :(得分:6)

您的方法根本就是错误的,您输出的PHP代码就好像它是HTML文本并尝试执行它。

可以从字符串执行代码,您可以在PHP中查看Eval方法(http://php.net/manual/fr/function.eval.php),但不建议这样做。与直接输出PHP代码相比,有更好的方法来解决您的特定问题。

你可以做的是向视图发送一些变量,并使用if条件。

您还可以在视图之前准备好所需的完整字符串,然后只需要显示它。

详细说明一下Eval:

1-如果您在Eval中执行的代码来自用户,则非常危险。

2-如果没有,通常会有更好的解决方案,使用Eval会使调试变得更难。

答案 1 :(得分:0)

实际上,我不确定我应该回答这个问题。

首先,您的请求的答案是mixed eval ( string $code ) php function

第二,忘记它。恕我直言,这可能是你能想到的最危险的事情之一。

答案 2 :(得分:0)

感谢大家的投入和最终的话语。存储在数据库中的PHP代码没有被用户输入,它完全是内部的,但它仍然不应该存在。

我最终浏览了数据库并设置了一个%%variablename%%来代替php代码,然后在检索时我编写了一个脚本:

preg_replace("/\%\%variablename\%\%/", $desiredPhpcode, dbRetrievedString)

%%variablename%%的所有实例。

这似乎是更安全,更健全的方法。我不知道这是否是一种理想的做法,任何其他人如果陷入这种情况就可以从中受益,或者它是否“有效”,但我想我会分享。

再次感谢您提供的帮助

答案 3 :(得分:-1)

PHP是服务器端语言。将它输出到客户端没有任何意义,因为没有人可以解释它。