搜索[]并替换它之间的所有内容

时间:2011-06-24 21:27:46

标签: php full-text-search preg-replace replace

我有一个使用该结构的模板文件 [名字] [LASTNAME]

等等......我将进行搜索并替换它。我想做的一件事是,当模板被送回时,如果我没有规定,[FIRSTNAME] ....它仍然显示在模板中...我想让它为NULL如果我没有没有规定该变量的任何数据。

在我的代码中我正在使用FILE_GET_CONTENTS

$q = file_get_contents($filename);
foreach ($this->dataArray as $key => $value) 
{
    $q = str_replace('['.$key.']', $value, $q);
}
return $q;

因此,一旦该循环过度填充了正确的数据,我需要进行另一次搜索并替换使用的任何变量,[FIRSTNAME]

我希望任何人都可以指引我朝着正确的方向前进。

干杯

2 个答案:

答案 0 :(得分:3)

听起来你只想添加一行:

$q = preg_replace('/\[[^\]]*\]/', '' , $q);

在完成所有已定义的替换后,删除任何剩余的方括号字。

如果你想简明扼要,可以用http://www.webmasterworld.com/php/3444822.htm的“一线模板引擎”替换整个函数,用方括号代替curlies。

答案 1 :(得分:2)

您实际上可以将数组作为参数传递给str_replace函数。

$keys = array(
    'FIRSTNAME',
    'LASTNAME'
):

$replacements = array(
    'George',
    'Smith'
);

str_replace($keys, $replacements, $input);

如果您要删除名字,如果它的空白,为什么不将它添加到key =>值为''的替换数组?

$this->dataArray['FIRSTNAME'] = '';

或类似

if (!isset($this->dataArray['FIRSTNAME'])) {
    $this->dataArray['FIRSTNAME'] = '';
}