Birlikte içerir str_replace kullanarak ve (php)

3 Cevap php

Ben bir web sayfası bir altbilgi var, altbilgi footer.php denir. Ben altbilgi diğer değişkenlere bağlı olarak farklı bir görüntü var istiyorum. Ben böyle bir şey yapmak istiyorum:

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

Ama bu işe yaramazsa, sadece normal bir içermez. Onları dahil ederken dosya metni değiştirmek için bir yolu var mı?

3 Cevap

Gibi bir şey kullanabilirsiniz:

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

include('footer.php');

/ / / / Footer.php

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

Temelde, ne vardı dizesi yerine 'footer.php' değil, dosyanın kendisi yapmaya çalışacaktı. Burada uygun yaklaşım görüntü için bir değişken kullanmak ve değişken görüntüyü besleyen bu altbilgi kullanıma sahip olacaktır.

Onları dahil ederken dosya metni değiştirmek için bir yolu var mı?

Evet, var, ama sizin de dahil dosya içeriğini geri dönmek zorunda kalacak.

footer.php

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

o zaman yapabileceğiniz

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

Orada bu yanlış bir şey yok ama olsa da, biraz garip geliyor.

Ben olsaydım, () sadece Jonathan Fingland önerdiği gibi önceden ayarlanmış bir değişken ile çalışmak, ya da Tomas Markauskas önermektedir gibi bir altbilgi dosyasının içeriğini getir dahil olurdu.

Eğer dizge 'footer.php' in 'logo2.jpg' ile 'logo1.jpg' yerine konum çünkü örnek çalışmıyor. Değiştirme sonucu hala 'footer.php' ve o zaman sadece dize eşleşen ada sahip bir dosyayı dahil ediyoruz.

Eğer gerçekten bir php dosyasındaki bir dize yerine ve daha sonra bunu yürütmek gerekirse, böyle bir şey yapabilirsiniz:

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

Ama ne istediğinizi elde etmek için daha iyi yollar (bir örnek için Jonathan Fingland gelen cevaba bakınız) vardır.