将{{}}转换为.php页面上的echo

时间:2017-03-03 15:10:36

标签: php laravel-blade

如何将{{ }}字符更改为.php页面上的等效回显函数,几乎与Laravel的blade.php页面完全相同(如果可能的话)?

我环顾四周,唯一与我似乎发现的相似的问题是“如何使用没有Laravel的Laravel刀片”这不是我想要的。

修改

由于apokryfos的回答,我发布了这些新数据。

这是我正在运行的功能:

function View($view)
{
    $src = __DIR__.'/../../views/'.$view.'.view.php';
    $destination= __DIR__.'/../../views/'.$view.'.view.php';

    file_put_contents(
         $destination,
        str_replace(["{{","}}" ],[ "<?=", "?>" ], file_get_contents($src))
    );

    echo file_get_contents($destination);
}

从控制器,我使用此代码来调用该函数View('welcome');。它的工作原理是检索页面,但唯一的问题是它不会在页面上发布变量,而直接在URL中访问页面就可以了。

这是我页面上的代码:

<?php
    $item = 11;
?>
    a php variable is {{ $item }}

它发布a php variable is,然后在页面上没有任何内容,不确定原因。

2 个答案:

答案 0 :(得分:3)

简单的事情是:

$src = "sourcefile.php";
$destination= "compiledsourcefile.php";

file_put_contents(
    $destination,
    str_replace(["{{","}}" ],[ "<?=", "?>" ], file_get_contents($src))
 );

 include $destination;

直接回应:

$src = "sourcefile.php";
$text = str_replace(["{{","}}" ],[ "<?=", "?>" ], file_get_contents($src))
eval("?>".$text); //Things get a bit ugly here
echo $text;

"?>"的原因是因为eval默认以“PHP模式”启动,但正确编写的PHP文件将明确设置进入PHP模式所需的区域,默认情况下以HTML模式启动。

注意:大多数人会说使用eval是不好的,虽然我同意使用eval取消选中确实很糟糕,但是在从PHP文件中读取的代码上使用它写入与在该文件上执行include完全相同,并没有那么糟糕。

答案 1 :(得分:-2)

您可以使用:

<?= $var ?>

与以下内容相同:

<?php echo $var ?>