How can I replace braces with <?php ?> in php file?

后端 未结 3 2033
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-29 16:01

I wanna replace braces with in a file with php extension. I have a class as a library and in this class I have three function like these:

         


        
相关标签:
3条回答
  • 2021-01-29 16:08

    What you're trying to do here won't work. The replacements carried out by the output buffering callback occur after PHP code has already been parsed and executed. Introducing new PHP code tags at this stage won't cause them to be executed.

    You will need to instead preprocess the PHP source file before evaluating it, e.g.

    $tp = file_get_contents(APP_DIR.DS.'view'.DS.$view.'.php');
    $tp = str_replace("{", "<?php echo \$", $tp);
    $tp = str_replace("}", "; ?>", $tp);
    eval($tp);
    

    However, I'd strongly recommend using an existing template engine; this approach will be inefficient and limited. You might want to give Twig a shot, for instance.

    0 讨论(0)
  • 2021-01-29 16:14

    How does this work:

    process.php:

    <?php
    
    $contents = file_get_contents('php://stdin');
    
    $contents = preg_replace('/\{([a-zA-Z_][a-zA-Z_0-9]*)\}/', '<?php echo $\1; ?>', $contents);
    echo $contents;
    

    bash script:

    process.php < my_file.php
    

    Note that the above works by doing a one-off search and replace. You can easily modify the script if you want to do this on the fly.

    Note also, that modifying PHP code from within PHP code is a bad idea. Self-modifying code can lead to hard-to-find bugs, and is often associated with malicious software. If you explain what you are trying to achieve - your purpose - you might get a better response.

    0 讨论(0)
  • 2021-01-29 16:31

    do this:

    function parser($view,$data)
    {
        $data=array("data"=>$data);
        $template=file_get_contents(APP_DIR.DS.'view'.DS.$view.'.php');
        $replace = array();
        foreach ($data as $key => $value) {
            #if $data is array...
            $replace = array_merge(
                $replace,array("{".$key."}"=>$value)
                );
        }
    
        $template=strtr($template,$replace);
        echo $template;
    }
    

    and ignore other two functions.

    0 讨论(0)
提交回复
热议问题