2010-01-28 4 views
1

J'ai un pied de page dans une page Web, le pied de page s'appelle footer.php. Je voudrais que le pied de page ait une image différente en fonction d'autres variables. Je veux faire quelque chose comme ceci:Utiliser str_replace et inclure ensemble (php)

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

Mais cela ne fonctionne pas, il fait juste une inclusion régulière. Y at-il un moyen de remplacer le texte dans les fichiers tout en les incluant?

Répondre

4

Utilisez quelque chose comme:

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

include('footer.php'); 

////footer.php

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

Fondamentalement, ce que vous aviez essaierait de faire le remplacer sur la chaîne 'footer.php', non le fichier lui-même. L'approche appropriée ici serait d'utiliser une variable pour votre image et que le pied de page utilise cette variable lors de la fourniture de l'image.

+0

Merci beaucoup, c'est logique pour moi maintenant. –

+0

.happy pour aider. –

1

Votre exemple ne fonctionne pas car vous remplacez 'logo1.jpg' par 'logo2.jpg' dans la chaîne 'footer.php'. Le résultat du remplacement est toujours 'footer.php' et vous ne faites qu'inclure un fichier dont le nom correspond à votre chaîne.

Si vous avez vraiment besoin de remplacer une chaîne dans un fichier php et l'exécuter après, vous pourriez faire quelque chose comme ceci:

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

Mais il y a de meilleures façons de réaliser ce que vous voulez (voir la réponse de Jonathan Fingland pour un exemple).

2

Existe-t-il un moyen de remplacer le texte dans les fichiers tout en les incluant?

Oui, mais votre fichier inclus devrait renvoyer son contenu.

footer.php

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

alors vous pouvez le faire

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

il n'y a rien de mal à cela, mais il se sent un peu bizarre, cependant.

Si je vous, j'aurais include() travailler seulement avec une variable pré-définie comme Jonathan Fingland propose, ou récupérer le contenu d'un fichier de pied de page comme Tomas Markauskas propose.