PHP,Eval代码导致变量

标签 php laravel laravel-blade

我正在使用 eval 来执行来自数据库的 php 代码。该代码用于元标记和页面标题。一个示例如下所示(存储在表中):

$name . " test page title |".SiteSettings::getSiteNameAlternate();

然后在 Controller 中我这样做($seo 是一个具有 meta_title 的对象,并且该元素具有来自数据库的确切字符串):

$pageTitle = isset($seo->meta_title) ? @eval("echo $seo->meta_title") : null;

我正在使用 Larevel 框架并将该页面标题传递给 Blade 模板,这很有效。 Blade 代码

<title>{{ isset($page_title) ? $page_title : SiteSettings::defaultPageTitle() }}</title>

问题是因为 eval 中的回显我也在页面顶部获得了页面标题。

我尝试使用 print(我知道这很愚蠢)和 printf。不工作。知道如何将 eval 的值放入变量中而不在屏幕上输出吗?

最佳答案

$pageTitle = isset($seo->meta_title) ? @eval("return $seo->meta_title;") : null;

如果设置了$seo->meta_title,它会将$seo->meta_title分配给$pageTitle,并且null 否则。

关于PHP,Eval代码导致变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38331961/

相关文章:

php - 如何在 Laravel 模型上延迟加载自定义属性?

php : convert serialized to array

php - Laravel 样式表和 javascript 不会为非基本路由加载

PHP 在变量中捕获打印/要求输出

php - 如何在 php 事务中执行文件系统操作?

php - Laravel 5.4 排序

javascript - 使用 jQuery 将特定类的输入的所有值更改为变量

php - 将名称添加到 laravel 路由

php - 如何检测浏览器是否向服务器请求某个文件

php - 如何防止包含的文件在 PHP 中生成输出?