我正在创建一个PHP模板页面,我不希望最终用户必须在其中编写PHP代码。因此,我想建立一个系统,将[[[string]]替换为$ string 。这样,我不必维护要查找的变量列表,我可以只使用方括号内的名称,如果代码中有匹配的变量,它将替换它。
我知道如何捕获所有放在方括号中的文本。
$text = 'string [[of]] text [[to]] test'
preg_match_all("/\[\[[^\]]*\]\]/", $text, $matches);
我认为preg_match_all返回所有匹配项的数组,但是似乎可以访问它的唯一方法是类似$ matches [1],但这将无法正常工作,因为我不知道会有多少匹配项会。
我已经尝试过
foreach ($matches as $match) {
///code
}
但是我认为这个foreach着眼于整个数组,而不是内部。
一旦获得每场比赛,我就会知道如何去掉两个括号并将其变成PHP可以识别的变量,而不是字符串。
str_replace($match, ${substr($match, 2, -2)}, $text)
[如果您对如何将HTML文件中的双括号文本转换为变量有更好的了解,PHP将首先读取而无需知道双括号中的内容,我也将对另一种解决方案感兴趣。
preg_match_all('/\[\[.*?\]\]/',$string,$matches);
将提供$ matches:
Array
(
[0] => Array
(
[0] => [[of]]
[1] => [[to]]
)
)
因此您可以循环$matches[0]