php smarty问题 undefined index 5

无法显示分配的字符串,Notice:Undefinedindex:inputinE:\myweb\mysmarty\templates_c\com_intro.tplon... 无法显示分配的字符串,
Notice: Undefined index: input in E:\myweb\mysmarty\templates_c\com_intro.tpl on line 6
是什么原因?
tpl:

<html>
<head>
<title>{$title}</title></head>
<body>
hello
{$input}
</body>
</html>

php:
<?php
require 'MyminiSmarty.class.php';
$mysmarty=new MyminiSmarty();

$mysmarty->assign("title","试试");
$mysmarty->assign("input","只是试试而已");
$mysmarty->display("intro.tpl");
?>

Smarty PHP:
<?php
class MyminiSmarty{
//文件路径
var $template_dir="./templates/";

var $complie_dir="./templates_c/";
//存放变量值
var $tpl_vars=array();

function assign($tpl_var,$val=NULL)
{
if($tpl_var!=' ')
{
$this->tpl_vars['$tpl_var']=$val;
}
}

function display($tpl_file){

$tpl_file_path = $this->template_dir.$tpl_file;
//查询是否存在
$complie_file_path=$this->complie_dir."com_".$tpl_file;
if(file_exists($tpl_file_path))
{
$tpl_file_content=file_get_contents($tpl_file_path);

$pattern=array(
'/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i' );

$replace=array(
'<?php echo $this->tpl_vars["${1}"]; ?>'
);
$new_str=preg_replace($pattern, $replace, $tpl_file_content);
file_put_contents($complie_file_path, $new_str);

echo "ok";
include $complie_file_path;
}
else{return false;}
}
}
?>
展开
 我来答
不再简单看世界
2017-10-29 · 超过79用户采纳过TA的回答
知道小有建树答主
回答量:154
采纳率:87%
帮助的人:84.1万
展开全部
MyminiSmarty这个类里面$pattern=array(
'/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i' );

$replace=array(
'<?php echo $this->tpl_vars["${1}"]; ?>'
);
正则表达式和字符串应该不用array包裹的,直接字符串写上就可以的。
网页上提示的notice错误的意思是你没有初始化input这个变量,php的变量虽然是不用初始化就可以使用,但是网页上还是会报notice错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tsotsi
2014-05-05 · TA获得超过940个赞
知道小有建树答主
回答量:1367
采纳率:55%
帮助的人:692万
展开全部
function assign($tpl_var,$val=NULL)
    {
    if($tpl_var!=' ')
    {
    $this->tpl_vars["$tpl_var"]=$val;
    }
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式