设置包含在文件中时访问包含中的属性

时间:2018-10-21 17:14:48

标签: php html

我正在尝试创建一个模板html页面,我将通过一个include调用该页面以将其设置为变量,然后将使用该变量来设置新文件的值。我需要解析包含文件中的变量,以便正确填充值。

演示这些文件:

main.php

$someVar = "someValue";
$fileText = include "aTemplate.php";
$newFileName = 'someFile.php';
if (file_put_contents($newFileName, $fileText) !== false) {
    echo "File created (" . basename($newFileName) . ")";
} else {
    echo "not created";
}

aTemplate.php

<?php 
return 
'<!doctype html>
<html lang="en">
    <head>
        <title><?php echo $someVar; ?></title>
    </head>
</html>'
?>

当前正在发生的事情是变量保持未解析状态且不保留任何值,因此在创建的html文件中标题为:

<title></title>

代替

<title>someValue</title>

如何更改“ aTemplate.php”文件以解决在“ main.php”中设置的属性?

3 个答案:

答案 0 :(得分:1)

只需在您的aTemplate.php中使用它:

<?php  
    return '<!doctype html>
    <html lang="en">
        <head>
            <title>'. $someVar .'</title>
        </head>
    </html>';
?>

答案 1 :(得分:0)

您应该在页面中回显那些字符串,而不是返回命令。 当您的文件不是函数时,关键字return在函数内部使用。浏览器只是简单地将包含文件提供的内容。如果是HTML字符串,应使用echo命令输出。

服务器还从上至下,从左至右执行代码。因此,变量$ someVar将在Template.php文件中访问。

使用以下代码代替

main.php

with t as
(
select 77 as number1 ,'88' as value union all
select 88 ,'66' union all
select 99,'33 55' union all
select 55,'22 77'
), t1 as

(
SELECT *, instr(value,' ') AS pos FROM t
),t3 as
(
SELECT substr(value, 1, pos-1) AS val from t1
union all
select substr(value, pos+1) AS val2 from t1
) select t.* from t join t3 on t.number1=CAST(t3.val as INTEGER)

aTemplate.php

    $someVar = "someValue"; 

    $file = 'aTemplate.php';

    // Open the file to get existing content

$fileText = include "aTemplate.php";


     $newFileName = 'someFile.php'; 
    // Write the contents back to the new file

    if (file_put_contents($newFileName, $fileText) !== false) 
        { 
        echo "File created (" . basename($newFileName) . ")"; } 
        else { 
        echo "not created"; 
        }

答案 2 :(得分:0)

模板存在两个问题,首先,因为HTML用单引号引起来,所以不会进行任何字符串替换。其次,您尝试在PHP中使用HTML进行PHP回显。我使用Heredoc来封装HTML,因为它允许使用任何形式的引号,并且也将进行替换。

通过直接在字符串中添加$someVar替换值的替换。

因此 aTemplate.php 变为...

<?php
return <<< HTML
<!doctype html>
<html lang="en">
    <head>
        <title>$someVar</title>
    </head>
</html>
HTML;