2016-03-19 2 views
2

Ich versuche, eine Datei mit PHP innerhalb, die ich ausgeführt werden soll, zu laden, und ich möchte auch bestimmte Wörter mit einem Wert meiner Wahl ersetzen können.Verwenden von PHP als Array-Wert für strtr

So zum Beispiel, habe ich 2 Dateien, index.php und 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'; 
?> 

Alles funktioniert, außer der Tatsache, dass {ID} leer herauskommt, da es nicht $in['id'] wie die Show Wert. Wenn ich $ID anstelle von $in['id'] verwende, zeigt es den Wert "hesdfsdfsdy" wie es gemeint ist. So etwas funktioniert nicht ganz mit $in. Wenn ich $in['id'] innerhalb der test.php verwende, funktioniert es gut. Es ist nur so, dass es nicht mit dem Ersatz arbeiten will.

test.php

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

Also meine Frage ist, warum nicht ich $in["id"] wenn {ID} mit arbeiten zu bekommen.

Danke

+0

'$ stmt-> bindValue (": id", $ _ COOKIE [id]);' brauchen '$ stmt-> bindValue (to be ": id", $ _ COOKIE [‘ id ']); '. Ich denke auch, dass Sie 'session_start();' oben auf jeder '.php' Seite direkt nach'

+0

@Anant, Danke für die Antwort. Ich habe diese behoben, danke. Obwohl ich immer noch das gleiche Problem habe – Gesset

+0

was 'var_dump ($ in);' sagt? überprüfen und zeigen Sie uns auch –

Antwort

1

Ihre variable $in in ihrem Umfang nicht von callback ist.

<?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