2010-01-28 87 views
1

我在页面有一个页脚,页脚叫做footer.php。我希望页脚根据其他变量有不同的图像。我想要做这样的事情:使用str_replace并包括在一起(php)

if (x=1) {include (str_replace('logo1.jpg','logo2.jpg','footer.php'));} 
else 
{include 'footer.php';} 

但这不起作用,它只是一个常规的包括。有没有办法在包含文件时替换文件中的文本?

回答

4

使用类似:

if (x==1) { 
    $image='logo1.jpg'; 
} else { 
    $image = 'logo2.jpg'; 
} 

include('footer.php'); 

////footer.php

echo "<img src='".$image."'/>"; 

基本上,你必须会尝试做字符串 'footer.php' 的替换一下,不文件本身。这里适当的方法是为图像使用变量,并在提供图像时使页脚使用该变量。

+0

非常感谢,现在对我来说很有意义。 – 2010-01-28 20:41:40

+0

。很高兴帮助。 – 2010-01-28 22:22:11

1

您的示例不起作用,因为您在'footer.php'字符串中将'logo1.jpg'替换为'logo2.jpg'。替换的结果仍然是'footer.php',然后你只需包含一个名称与你的字符串相匹配的文件。

如果你真的需要一个PHP文件替换字符串和事后执行它,你可以做这样的事情:

$file = file_get_contents('footer.php'); 
$file = str_replace('logo1.jpg', 'logo2.jpg', $file); 
eval($file); 

但也有更好的方法来实现你想要的(见乔纳森回答以芬兰为例)。

2

有没有办法在包含文件时替换文件中的文本?

是的,但您的包含文件将不得不返回其内容。

footer.php

<? 
return "<img src='#image'>"; 
?> 

那么你可以做

echo str_replace("#image", "image.jpg", include("footer.php")); 

有没有错,但感觉稍显怪异,但。

如果我是你,我会让include()只是像Jonathan Fingland提议的那样使用预置变量,或者像Tomas Markauskas提出的那样获取页脚文件的内容。