我正在尝试创建一个模板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”中设置的属性?
答案 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;