-1

我正在尝试创建一个动态的常见问题解答页面。我有以下 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 正在呈现,但显然 php 不是。和正在被删除<??>只显示代码。有解决办法吗?或者我的方法从根本上是错误的。

谢谢

4

4 回答 4

6

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

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

您可以做的是将一些变量发送到视图,并在那里使用 if 条件。

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

详细说明一下 Eval :

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

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

于 2013-06-25T21:47:15.650 回答
0

感谢大家的投入和由此产生的讨论。存储在数据库中的 php 代码不是由用户输入的,它完全是内部的,但它仍然不应该存在。

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

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

的所有实例%%variablename%%

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

再次感谢您的投入,它帮助很大

于 2013-06-26T18:01:34.473 回答
0

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

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

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

于 2013-06-25T21:53:47.477 回答
-1

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

于 2013-06-25T21:48:43.263 回答