首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用刀片compileString的Laravel - php eval

问利用刀片compileString的Laravel - php eval
EN

Stack Overflow用户
提问于 2018-04-27 02:01:28
回答 1查看 1.9K关注 0票数 4

我试图将刀片模板字符串解析为php格式,并使用eval()将字符串计算为php代码

代码语言:javascript
复制
 $array = [
     'foo' => 'bar',
     'bar' => 'foo'
 ];
 $content = '@foreach($array as $value){{$value}}@endforeach';
 $blade = Blade::compileString($content);
 $php = eval($blade);

到目前为止,这是我的测试代码,它会引发异常。

ParseError:语法错误,意外的“<”,期望文件结束

compileString()后$blade的值

代码语言:javascript
复制
<?php $__currentLoopData = $array; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $value): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?><?php echo e($value); ?><?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>

是什么导致了这个错误?eval()与compileString()将刀片解析为php的方式不兼容吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-27 02:21:30

如手册所述

代码不能包装在打开和关闭PHP标记中,即必须传递'echo "Hi!";'而不是'<?php echo "Hi!"; ?>'。通过使用适当的PHP标记(例如'echo "In PHP mode!"; ?>In HTML mode!<?php echo "Back in PHP mode!";' ),仍然可以离开并重新进入PHP模式。

刀片被包装在<?php标记中,编译失败。移除封装的PHP标记,但保留间隙标记。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50054158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档