2011-06-01 55 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]

相關問題