我有一个函数,它使用file_get_content来获取一些带有一些vars的html。然后我的想法就是用这个函数从db获取并返回它来更新变量。但是,在输出中,变量只读取$ myNameVar而不是My Name。让我粘贴我的代码。
function query($query,$item)
{
$this->item = file_get_contents("/pages/items/".$item.".php");
$this->queryResult = mysql_query($query);
if(mysql_num_rows($this->queryResult))
{
while($row = mysql_fetch_assoc($this->queryResult))
{
extract($row);
// $myNameVar = My Name;
// in the finished code there will be a bunch (15 or more) vars
// that needs to be updated in the Item file so the vars
// must be updated automatically
return $this->item;
}
}
}
item.php的内容:
<p>My name is <span style="color: #000;">$myNameVar</span></p>
这是对函数的调用:
<?php echo $queryDb->query("SELECT * FROM sometable","item");?>
这是输出:
My Name is $myNameVar
应该是:
My Name is My Name
我试图将item.php文件中的变量替换为%%并运行foreach来更新变量,如此(不同的函数):
function query($query,$item)
{
$this->item = file_get_contents("/pages/items/".$item.".php");
$this->queryResult = mysql_query($query);
if(mysql_num_rows($this->queryResult))
{
while($row = mysql_fetch_assoc($this->queryResult))
{
foreach ($row as $key => $value)
{
$this->item = str_replace("%".$key."%",$value,$this->item);
}
return $this->item;
}
}
}
这部分工作,遗憾的是这只返回每行的第一项。因此,如果在第一行$ myNameVar = Joe和第二行$ myNameVar = James,两个段落都会将名称列为Joe,如下所示:Joe Joe,而不是Joe James。
非常感谢任何帮助:)
答案 0 :(得分:2)
那是因为file_get_contents()
将文件内容作为字符串传递,而不是作为可执行的PHP代码传递。
改为使用include()
。
答案 1 :(得分:0)
如果您希望代码实际执行某些操作,您可能不应该在第一行返回。
function query($query,$item)
{
$item = file_get_contents("/pages/items/".$item.".php");
$this->queryResult = mysql_query($query);
if(mysql_num_rows($this->queryResult))
{
while($row = mysql_fetch_assoc($this->queryResult))
{
foreach ($row as $key => $value)
{
$this->item = str_replace("%".$key."%",$value,$this->item);
}
return $item;
答案 2 :(得分:0)
<p>My name is <span style="color: #000;">$myNameVar</span></p>
需要
<p>My name is <span style="color: #000;"><?php echo $myNameVar ?></span></p>