2010-03-18 7 views
1

J'ai un système de template, qui remplace le texte tel que {HEADER} par le contenu approprié. J'utilise un tableau comme celui-ci, qui remplace la clé par la valeur en utilisant str_replace.php define variable dans le tableau str_replace

$array = array("HEADER","This is the header"); 
    foreach($array as $var => $content) { 
     $template = str_replace("{" . strtoupper($var). "}", $content,$template); 
    } 

maintenant im essayant d'utiliser une variable définie comme ceci:

define("NAME","Site Name"); 

intérieur de la valeur pour l'en-tête. Je veux donc que la variable définie soit à l'intérieur du tableau qui est remplacé de telle sorte qu'elle ressemble à ceci, mais cela ne fonctionne pas.

$array = array("HEADER","Welcome to ".NAME."'s website!"); 

Des idées? me dire si je ne suis pas clair

+0

Quand vous dites "ça ne marche pas", que se passe-t-il? Que vois-tu? Voyez-vous des erreurs d'accompagnement lorsque le rapport d'erreurs est activé? – webbiedave

Répondre

1

ne devrait pas votre ligne de tableau est:

$array = array("HEADER" => "Welcome to ".NAME."'s website!"); 

Puisque vous accédez aux éléments du tableau par clé et la valeur?

0

La façon dont vous êtes en boucle à travers le réseau, en utilisant:

foreach($array as $var => $content) { 
    // ... 
} 

me fait penser, vous devez utiliser un tableau associatif pour votre $array.

c.-à-d., Elle devrait être déclarée ainsi:

$array = array("HEADER" => "Welcome to ".NAME."'s website!"); 


Et, comme une démonstration, voici un exemple de code:

$template = <<<TPL 
Hello, World ! 
{HEADER} 
And here's the content ;-) 
TPL; 

define("NAME","Site Name"); 

$array = array("HEADER" => "Welcome to ".NAME."'s website!"); 
foreach($array as $var => $content) { 
    $template = str_replace("{" . strtoupper($var). "}", $content,$template); 
} 

var_dump($template); 

Et la sortie, je l'obtiens:

string 'Hello, World ! 
Welcome to Site Name's website! 
And here's the content ;-)' (length=73) 

Ce qui indique que cela fonctionne ;-)
(Ce n'était pas le cas, quand $array a été déclarée comme ous le mettre)


Lorsque vous utilisez ceci:

$array = array("HEADER","This is the header"); 
var_dump($array); 

Vous déclarez un tableau qui contient deux éléments:

array 
    0 => string 'HEADER' (length=6) 
    1 => string 'This is the header' (length=18) 


D'autre part, lorsque vous utilisez ceci:

$array = array("HEADER" => "This is the header"); 
var_dump($array); 

Vous déclarez un tableau:

  • ne contient qu'un seul article
  • « Entête » étant la clé
  • et « Ceci est l'en-tête » étant la valeur

Ce qui donne:

array 
    'HEADER' => string 'This is the header' (length=18) 


Lorsque vous utilisez foreach ($array as $key => $value), vous devez le second ;-)


Et, uniquement pour référence, vous pouvez jeter un oeil à, dans le manuel, les pages suivantes:

+0

mon mauvais j'utilise ce genre de tableau, je l'ai juste tapé à la volée ici. oui je sais comment utiliser les tableaux et foreach .. – john

+0

cela signifie-t-il que votre problème est résolu? Ou y a-t-il encore quelque chose qui * ne fonctionne pas *? Si oui, pouvez-vous éditer votre question pour ajouter quelques informations pour en dire plus sur ce que * ne fonctionne pas * signifie? –