PHP:询问preg_match的工作方式


PHP : Asking about the way preg_match works

我正在努力将值添加到模板中,但遇到了问题。

这是我的模板

TIME : |time,hour|:|time,min|:|time,sec| <br />
ADDING BLOCK 'TIME' ...<br />
<i>|template,tibcoreapps,main|</i><br />

字符|用于分隔数据块。当我尝试使用 preg_match 获取块|template,tibcoreapps,main|时,它不适用于我的代码:

preg_match("/(.*)|template,tibcoreapps,(.*)|(.*)/",$templateContent,$result);
var_dump($result);

结果是

array (size=2)
0 => string 'TIME : |time,hour|:|time,min|:|time,sec| <br />  (length=48)
1 => string 'TIME : |time,hour|:|time,min|:|time,sec| <br />  (length=48)

我尝试在互联网上搜索,但无法确切了解preg_match是如何工作的。我曾经认为如果我分配$result(第三个参数),它会得到所有匹配的字符串。但即使我尝试获取一个以 template,tibcoreapps, 开头的块,它也会返回其他块或它得到的第一个块。请解释一下preg_match的工作方式。

感谢您的任何帮助。

由于|在正则表达式中具有特殊含义,因此您需要对其进行转义。

preg_match("/(.*)'|template,tibcoreapps,(.*)'|(.*)/",$templateContent,$result);

如果您不熟悉正则表达式,则应阅读 regular-expressions.info 中的教程。