2011-06-01 56 views
1

我想做一些简单的...我想?preg_match未知修饰符'。'在wordpress

有以下...

$current = '/zeta/2010/03/'; 

preg_match('/zeta/.{4}/(.{2})/$',$current,$monthnum); 

简单地想使$monthnum = 03

保持要么得到一个未知的修改错误,或者当我添加分隔符'#/zeta/.{4}/(.{2})/$#它只是#Array返回...

任何人都可以帮忙吗?

+0

如果你已经知道如何解决修改错误,你为什么不看看数组? – 2011-06-01 18:44:52

回答

3

PCRE必须包含在分隔符中。

你必须要么逃跑内\或使用其他分隔符:

~/zeta/.{4}/(.{2})/$~' 

否则,PHP认为表达/zeta/.不是valid modifier

preg_match不返回数组。您可以使用var_dump检查$monthnum的内容并访问您想要的信息。

您可以通过简单地阅读文档已经解决了你的问题:

如果matches提供,则充满了搜索的结果。 $matches[0]将包含匹配完整模式的文本,$matches[1]将具有匹配第一个捕获的括号内子模式的文本,依此类推。

的preg_match()返回倍图案匹配的数目。这将是0次(不匹配)或1次,因为preg_match()将在第一场比赛后停止搜索。

2

http://us3.php.net/manual/en/function.preg-match.php

正如你可以看到,如果它匹配的东西本身的功能返回true或false。当函数返回true时,$ monthnum将被创建为一个数组,其中$ monthnum [0]是完全匹配的,并且您指定要在您的正则表达式中获取的任何后续部分将在此之后加载。在你的情况下,部分:

([0-9]{2})

将被加载到$ monthnum [1]

相关问题