所以我正在尝试执行以下操作,但它不起作用。不确定原因:
$block = preg_replace('#'{([A-Z0-9'-_]+)'}#', "<?php " . $this->compile_var(''1) . " ?>", $block);
我使用它的目的是打开这个输入:
<link href="{VAR_TEMPLATE_PATH}css/common.css" rel="stylesheet" type="text/css">
进入:
<link href="<?php $this->page_vars["TEMPLATE_PATH"] ?>css/common.css" rel="stylesheet" type="text/css">
实际的转换很好,这些都包含在compile_var中,但preg_replace不再将''''1变成"var_TEMPLATE_PATH",这是在字符串中使用的。
相反,它传递"''1"作为compile_var的参数?
为什么会突然发生这种事?我该怎么修?
干杯!
这样使用它:
$block = '<link href="{VAR_TEMPLATE_PATH}css/common.css" rel="stylesheet" type="text/css">';
$block=preg_replace('#'{(?:VAR_)?(['w-]+)'}#', '<?php $this->compile_var("'1") ?>', $block);
echo $block;
输出:
<link href="<?php $this->compile_var("TEMPLATE_PATH") ?>css/common.css" rel="stylesheet" type="text/css">
如果您希望VAR_
也在最终输出中,则使用:
$block = preg_replace('#'{(['w-]+)'}#', '<?php $this->compile_var("'1") ?>', $block);
请尝试在compile_var中使用'1
。
<?php " . $this->compile_var('1) . " ?>
下面是一个工作示例:http://regex101.com/r/rM0jD1