2010-01-28 3 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

Большое спасибо, это имеет смысл для меня сейчас. –

+0

. Радостный, чтобы помочь. –

1

Ваш пример не работает, потому что вы заменяете 'logo1.jpg' на 'logo2.jpg' в строке 'footer.php'. Результатом замены по-прежнему остается «footer.php», а затем вы просто включаете файл с именем, которое соответствует вашей строке.

Если вам действительно нужно заменить строку в файл PHP и выполнить его после этого, вы могли бы сделать что-то вроде этого:

$file = file_get_contents('footer.php'); 
$file = str_replace('logo1.jpg', 'logo2.jpg', $file); 
eval($file); 

Но есть лучшие способы достичь того, что вы хотите (см ответ от Джонатана Fingland для примера).

2

Есть ли способ заменить текст в файлах при их включении?

Да, есть, но ваш включенный файл должен будет вернуть его содержимое.

footer.php

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

, то вы можете сделать

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

нет ничего плохого в этом, но он чувствует себя немного странно, однако.

Если бы я был вами, я бы включил функцию include() только с заданной переменной, как предлагает Джонатан Финнгленд, или получить содержимое файла нижнего колонтитула, например, предложенного Томасом Маркаускасом.

Смежные вопросы