preg_replace()帮助将{$ variable}转换为php echo变量语句

时间:2013-06-14 12:50:47

标签: php preg-replace

我正在开发小模板类。我需要帮助转换模板文件中编写的{$ variable}以转换为

喜欢:

<html>
   <body>
      <p> Hey Welcome {$username} </p> 
   </body>
</html>

转换为

    <html>
   <body>
      <p> Hey Welcome <?php echo $username ?> </p> 
   </body>
</html>

就像变量用户名一样。可以有任何长度的变量。我只想将其转换为php echo statment。

我认为有可能使用preg_replace()但不知道如何。

3 个答案:

答案 0 :(得分:1)

这是怎么回事?

$string = 'Hello {$username}, how are you?';
$new_string = preg_replace('/\{(\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/', '<?php echo \\1; ?>', $string);
echo $new_string;

这给出了这个:

Hello <?php echo $username; ?>, how are you?

我从php手册中借用了这个表达式。

  

变量名遵循与PHP中其他标签相同的规则。一个有效的   变量名以字母或下划线开头,后跟任意名称   字母,数字或下划线的数量。作为正则表达式,   它将被表达为:' [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] * '

因此理论上它应匹配任何有效变量。

答案 1 :(得分:0)

preg_replace('/\{\$username\}/', '<?php echo $username; ?>', $text);

或一般情况下:

preg_replace('/\{\$([^\}]+)\}/', '<?php echo $$1; ?>', $text);

答案 2 :(得分:0)

例如: 你有app文件夹结构:

  • 应用程序/视图/ index.template
  • 应用程序/控制器/ index.php的
  • 应用程序/ index.php的

其中“app”文件夹是webroot

因此,文件“app / view / index.template”包含:

<html>
   <body>
      <p> Hey Welcome {$username} </p> 
   </body>
</html>

“app / controller / index.php”包含下一个:

<?php
    $username = 'My Hero';
    $content = file_get_contents(__DIR__ . '../view/index.template');
    if ($content) {
        echo str_replace('{$username}', $username, $content);
    } else { echo 'Sorry, file not found...';}

“app / index.php”包含下一个:

<?php
    include __DIR__ . '/controller/index.php';

像这样......