Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将字符串提取(解析)为碎片_Php_Templates - Fatal编程技术网

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本身就是最好的模板引擎。您总是将一种语法替换为另一种语法,只是为了增加复杂性和性能。