使用str_replace并包含在一起(php)

时间:2010-01-28 19:42:27

标签: php include str-replace

我在网页中有一个页脚,页脚名为footer.php。我希望页脚根据其他变量有不同的图像。我想做这样的事情:

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

但这不起作用,它只是定期包含。有没有办法在包含它们的同时替换文件中的文本?

3 个答案:

答案 0 :(得分:4)

使用类似:

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

include('footer.php');

//// footer.php

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

基本上,你曾经尝试过对字符串'footer.php'进行替换,而不是文件本身。这里适当的方法是为图像使用变量,并在提供图像时让页脚使用该变量。

答案 1 :(得分:2)

  

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

是的,但是你所包含的文件必须返回其内容。

footer.php

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

然后你可以做

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

这没有什么不妥,但感觉有点奇怪。

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

答案 2 :(得分: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);

但是有更好的方法可以达到你想要的效果(请参阅Jonathan Fingland的答案)。