2010-01-28 85 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提出的那樣獲取頁腳文件的內容。