2016-03-19 9 views
2

Yürütülmesini istediğim içeride PHP içeren bir dosya yüklemeye çalışıyorum ve ayrıca belirli sözcükleri tercihimin bir değeriyle değiştirmek istiyorum.strtr için bir dizi değeri olarak php kullanarak

Yani, örneğin, ben 2 dosya, index.php ve test.php

Index.php

<?php 
$stmt = $dbh->prepare("SELECT * FROM users WHERE `id` = :id"); 
$stmt->bindValue(":id",$_COOKIE[id]); 
$stmt->execute(); 

$in = $stmt->fetch(PDO::FETCH_ASSOC); 

function callback($buffer) 
{ 
$ID = 'hesdfsdfsdy'; 
$arr = array(
    "{ID}" => ''.$in['id'].'', 
    "{TITLE}" => 'Testttingggg' 
); 
    return (strtr($buffer,$arr)); 
} 

ob_start("callback"); 
include 'test.php'; 
?> 

Her şey o kadar $in['id'] göstermez olarak {ID} boş çıkıyor olması dışında, çalışıyor olması değer. $in['id'] yerine $ID kullanırsanız, "hesdfsdfsdy" değerini belirtildiği gibi gösterecektir. Yani bir şey tam olarak $in ile çalışmıyor. test.php'un içinde $in['id'] kullanırsam, iyi çalışıyor. Sadece onun yerine çalışmak istemiyor. Ben {ID} kullanırken $in["id"] işe alınamıyor neden

<?php 
echo '{TITLE} - '.$in["id"].'; 
?> 

test.php

Benim soru vardır.

Eğer

+0

'$ stmt-> bindValue (": id", $ _ COOKIE [kimlik]);' '$ stmt-> bindValue (olması gerekir ": id", $ _ COOKIE [' id ']);'. Ayrıca her '.php' sayfanızın üstüne 'sessionpn'();' 'in hemen ardından

+0

@Anant, yanıtladığınız için teşekkürler. Bunları tamir ettim, teşekkürler. Yine de aynı sorunu yaşıyorum rağmen – Gesset

+0

ne 'var_dump ($ in);' diyor? kontrol et ve göster bize –

cevap

1

Sizin değişken $incallback kapsamında değildir ederiz.

<?php error_reporting(E_ALL); 

$id = 123; 

function callback($buffer) 
{ 
    global $id; 
    return strtr($buffer, ['{ID}' => $id]); 
} 

ob_start('callback'); 

echo 'Id value: {ID}'; 

http://php.net/manual/en/language.variables.scope.php