使用str_替换并包含在一起(php)

使用str_替换并包含在一起(php),php,include,str-replace,Php,Include,Str Replace,我在网页中有一个页脚,这个页脚叫做footer.php。我希望页脚根据其他变量具有不同的图像。我想这样做: if (x=1) {include (str_replace('logo1.jpg','logo2.jpg','footer.php'));} else {include 'footer.php';} $file = file_get_contents('footer.php'); $file = str_replace('logo1.jpg', 'logo2.jpg', $file);

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

if (x=1) {include (str_replace('logo1.jpg','logo2.jpg','footer.php'));}
else
{include 'footer.php';}
$file = file_get_contents('footer.php');
$file = str_replace('logo1.jpg', 'logo2.jpg', $file);
eval($file);
但这不起作用,它只是做了一个常规的包含。有没有一种方法可以在包含文件时替换文件中的文本?

使用类似于:

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

include('footer.php');
////footer.php

echo "<img src='".$image."'/>";
<?
return "<img src='#image'>";
?>
基本上,您将尝试替换字符串“footer.php”,而不是文件本身。这里合适的方法是为图像使用一个变量,并让页脚在提供图像时使用该变量

使用类似于:

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

include('footer.php');
////footer.php

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

基本上,您将尝试替换字符串“footer.php”,而不是文件本身。这里合适的方法是为图像使用一个变量,并让页脚在提供图像时使用该变量

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

如果您确实需要替换php文件中的字符串并在以后执行,您可以执行以下操作:

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

但是有更好的方法来实现您想要的,请参见Jonathan Fingland的答案作为示例。

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

如果您确实需要替换php文件中的字符串并在以后执行,您可以执行以下操作:

if (x=1) {include (str_replace('logo1.jpg','logo2.jpg','footer.php'));}
else
{include 'footer.php';}
$file = file_get_contents('footer.php');
$file = str_replace('logo1.jpg', 'logo2.jpg', $file);
eval($file);
但有更好的方法来实现你们想要的——以乔纳森·芬格兰的回答为例

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

是的,有,但您的包含文件必须返回其内容

footer.php

echo "<img src='".$image."'/>";
<?
return "<img src='#image'>";
?>
这没什么问题,不过感觉有点奇怪

如果我是你,我会像Jonathan Fingland建议的那样让include只处理一个预设变量,或者像Tomas Markauskas建议的那样获取页脚文件的内容

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

是的,有,但您的包含文件必须返回其内容

footer.php

echo "<img src='".$image."'/>";
<?
return "<img src='#image'>";
?>
这没什么问题,不过感觉有点奇怪


如果我是你,我会像乔纳森·芬格兰(Jonathan Fingland)建议的那样,让include只处理一个预设变量,或者像托马斯·马考斯卡斯(Tomas Markauskas)建议的那样获取页脚文件的内容。

非常感谢,这对我现在有意义。非常感谢,这对我现在有意义。