Php 将字符串提取(解析)为碎片
然后,我将使用Php 将字符串提取(解析)为碎片,php,templates,Php,Templates,然后,我将使用内容:meta处理数据,然后将内容重新组合起来(string\u left+new data+string\u right),然后继续执行,直到整个内容被解析。您可以使用相对简单的正则表达式执行此操作: $string_left = everything up to a "[{" $command = "CONTENT:meta" $string_right= everything after the "}]". 这将演示如何使用正则表达式。delim变量中的额外斜杠是
内容:meta处理数据,然后将内容重新组合起来(string\u left+new data+string\u right)
,然后继续执行,直到整个内容被解析。您可以使用相对简单的正则表达式执行此操作:
$string_left = everything up to a "[{"
$command = "CONTENT:meta"
$string_right= everything after the "}]".
这将演示如何使用正则表达式。delim变量中的额外斜杠是因为您的分隔符使用正则表达式字符,所以您需要对它们进行转义。您可以使用相对简单的正则表达式:
$string_left = everything up to a "[{"
$command = "CONTENT:meta"
$string_right= everything after the "}]".
这将演示如何使用正则表达式。delim变量中的额外斜杠是因为您的分隔符使用正则表达式字符,所以您需要对它们进行转义。为什么不改用模板软件呢?这里有一个大名单
为什么不使用模板软件呢?这里有一个大名单
您可以与匹配[{…}]
的正则表达式一起使用,还可以使用替换函数,该函数接受匹配的“命令”并返回合适的替换字符串:
$inputString = "left part of string [{inner command}] right part of string";
$leftDelim = "\[\{";
$rightDelim = "\}\]";
preg_match("%(.*?)$leftDelim(.*?)$rightDelim(.*)%is", $inputString, $matches);
print_r($matches);
并定义my_replacer
,如下所示:
$output = preg_replace('/\[{([^}]*)}\]/e', 'my_replacer(\'$1\')', $string);
您可以与匹配[{…}]
的正则表达式一起使用,还可以使用替换函数,该函数接受匹配的“命令”并返回合适的替换字符串:
$inputString = "left part of string [{inner command}] right part of string";
$leftDelim = "\[\{";
$rightDelim = "\}\]";
preg_match("%(.*?)$leftDelim(.*?)$rightDelim(.*)%is", $inputString, $matches);
print_r($matches);
并定义my_replacer,如下所示:
$output = preg_replace('/\[{([^}]*)}\]/e', 'my_replacer(\'$1\')', $string);
您可能应该使用现有的模板引擎,而不是使用自己的模板引擎。但是如果你想/需要自己动手:你必须使用这种语法吗?对于模板字段,是否也可以使用类似HTML的语法,从而可以使用DOM解析器正确解析整个内容?或者干脆不使用任何模板引擎。PHP本身就是最好的模板引擎。你总是会用另一种语法替换一种语法,只是为了增加复杂性和性能。你可能应该使用现有的模板引擎,而不是使用自己的模板引擎。@Anon是这么说的。但是如果你想/需要自己动手:你必须使用这种语法吗?对于模板字段,是否也可以使用类似HTML的语法,从而可以使用DOM解析器正确解析整个内容?或者干脆不使用任何模板引擎。PHP本身就是最好的模板引擎。您总是将一种语法替换为另一种语法,只是为了增加复杂性和性能。