PHP:询问preg_match的工作方式

时间:2013-11-16 10:45:00

标签: php regex preg-match

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

这是我的模板

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

字符|用于分隔数据块。当我尝试使用|template,tibcoreapps,main|阻止preg_match时,它无法使用我的代码:

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的工作方式。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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