php在str_replace数组中定义变量
我有一个模板系统,它用适当的内容替换诸如php在str_replace数组中定义变量,php,templates,replace,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); } 现在,我尝试使
{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!");
有什么想法吗?如果我不清楚,请告诉我您的阵列线不应该是:
$array = array("HEADER" => "Welcome to ".NAME."'s website!");
既然您是通过键和值访问数组项,那么您的数组行不应该是:
$array = array("HEADER" => "Welcome to ".NAME."'s website!");
由于您是通过键和值来访问数组项的?您在数组中循环的方式,使用:
foreach($array as $var => $content) {
// ...
}
让我觉得你应该为你的$array
使用关联数组
i、 例如,应这样声明:
$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);
这表明它正在工作;-)
(当
$array
以您设置它的方式声明时,它不是)
使用此选项时:
$array = array("HEADER","This is the header");
var_dump($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);
$array = array("HEADER" => "This is the header");
var_dump($array);
您正在声明一个数组,该数组:
- 仅包含一项
- “标题”是关键
- “这是标题”是值
array
'HEADER' => string 'This is the header' (length=18)
使用
foreach($array as$key=>$value)
时,需要第二个;-)
并且,仅供参考,您可以在手册中查看以下页面:
foreach($array as $var => $content) {
// ...
}
让我觉得你应该为你的$array
使用关联数组
i、 例如,应这样声明:
$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);
这表明它正在工作;-)
(当
$array
以您设置它的方式声明时,它不是)
使用此选项时:
$array = array("HEADER","This is the header");
var_dump($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);
$array = array("HEADER" => "This is the header");
var_dump($array);
您正在声明一个数组,该数组:
- 仅包含一项
- “标题”是关键
- “这是标题”是值
array
'HEADER' => string 'This is the header' (length=18)
使用
foreach($array as$key=>$value)
时,需要第二个;-)
并且,仅供参考,您可以在手册中查看以下页面: