我在頁面有一個頁腳,頁腳叫做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