我在页面有一个页脚,页脚叫做footer.php。我希望页脚根据其他变量有不同的图像。我想要做这样的事情:使用str_replace并包括在一起(php)
if (x=1) {include (str_replace('logo1.jpg','logo2.jpg','footer.php'));}
else
{include 'footer.php';}
但这不起作用,它只是一个常规的包括。有没有办法在包含文件时替换文件中的文本?
我在页面有一个页脚,页脚叫做footer.php。我希望页脚根据其他变量有不同的图像。我想要做这样的事情:使用str_replace并包括在一起(php)
if (x=1) {include (str_replace('logo1.jpg','logo2.jpg','footer.php'));}
else
{include 'footer.php';}
但这不起作用,它只是一个常规的包括。有没有办法在包含文件时替换文件中的文本?
使用类似:
if (x==1) {
$image='logo1.jpg';
} else {
$image = 'logo2.jpg';
}
include('footer.php');
////footer.php
echo "<img src='".$image."'/>";
基本上,你必须会尝试做字符串 'footer.php' 的替换一下,不文件本身。这里适当的方法是为图像使用变量,并在提供图像时使页脚使用该变量。
您的示例不起作用,因为您在'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);
但也有更好的方法来实现你想要的(见乔纳森回答以芬兰为例)。
有没有办法在包含文件时替换文件中的文本?
是的,但您的包含文件将不得不返回其内容。
footer.php
<?
return "<img src='#image'>";
?>
那么你可以做
echo str_replace("#image", "image.jpg", include("footer.php"));
有没有错,但感觉稍显怪异,但。
如果我是你,我会让include()只是像Jonathan Fingland提议的那样使用预置变量,或者像Tomas Markauskas提出的那样获取页脚文件的内容。
非常感谢,现在对我来说很有意义。 – 2010-01-28 20:41:40
。很高兴帮助。 – 2010-01-28 22:22:11