4

現在「単純な」テンプレート クラスを開発していますが、問題は、eval を使用せずに文字列内で PHP コードを実行するにはどうすればよいかということです。

次の例は、テンプレート クラスがどのように機能するかを示しています。

$user = 'Dave';

ob_start();     
include 'index.tpl';
$content = ob_get_clean(); // String

$pattern = sprintf('/%s\s*(.+?)\s*%s/s', '{{', '}}'); // replace with php tags
$new_content = preg_replace($pattern, '<?php echo $1; ?>', $content);

echo $new_content; 

index.tpl

<html>
     <head></head>
     <body>
         Hello {{ $user }}!
     </body>
</html>

次の結果が得られます。

Hello !

私は eval を使用したくありません。使用するのが遅くて悪いからです。これを行う他の方法はありますか? laravel ブレード エンジンは eval を使用しないため、存在する必要があります。

ありがとう、

ジョエル。

4

2 に答える 2

0

PHP コードを実行する必要はありません。{{ $user }}実行されなくなった PHP コードに置き換えます。したがって、置換後の HTML は次のようになります。

<?php echo "Dave" ?>

ブラウザ<?...>は HTML タグと認識しているため、正しい名前が表示されません。

解決策: Dave{{ $user }}に置き換えるだけです。なぜ PHP コードを追加する必要があるのでしょうか?

于 2013-08-11T01:26:56.257 に答える