php在str_replace数组中定义变量

时间:2010-03-18 21:49:20

标签: php templates replace

我有一个模板系统,用适当的内容替换{HEADER}等文本。我使用这样的数组,用str_replace替换键值。

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

现在我试图使用这样的定义变量:

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

标题的值内部。所以我希望定义的变量位于被替换的数组中,所以它看起来像这样,但它不起作用。

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

有什么想法吗?告诉我,如果我不清楚

2 个答案:

答案 0 :(得分:1)

你的阵列不应该是:

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

由于您是按键和值访问数组项吗?

答案 1 :(得分:0)

使用以下方法循环遍历数组:

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

让我觉得您应该为$array使用关联数组

即,它应该以这种方式声明:

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


而且,作为演示,这是一个代码示例:

$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);

输出我得到了它:

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

表明它正在工作;-)
(当$array按照你设定的方式宣布时,它不是这样的)


使用时:

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

您声明的数组包含两个项目:

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


另一方面,使用时:

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

您正在声明一个数组:

  • 只包含一个项目
  • “HEADER”是关键
  • 和“这是标题”是值

给出了:

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


使用foreach ($array as $key => $value)时,您需要第二个; - )


而且,仅供参考,您可以在手册中查看以下页面: