我正在尝试创建动态的常见问题解答页面。我有以下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正在渲染,但是虚拟的却不是。正在删除<?
和?>
,只显示代码。有没有解决这个问题?或者我的方法根本就是错误的。
谢谢
答案 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是服务器端语言。将它输出到客户端没有任何意义,因为没有人可以解释它。