2013-05-09 116 views
2

我已經出現在我的內容,總是有這種格式的一些內容佔位符:用PHP解析(正則表達式)內容佔位符

[page_x] 

其中x是一個整數。

我想要做的是獲得所有符合該模式的佔位符,以便我可以遍歷它們。

我在正則表達式一個真正的新手(努力學習),所以我只有在這一點上:

preg_match_all("/[page_(*)]/", $content, $matches) 

這顯然是錯誤的,因爲它不工作 - 例如含有$內容[page_1]爲$匹配提供了一個空數組。

任何幫助,或指針將不勝感激。

+0

*表示重複零次或多次,但您沒有指定重複的內容。將其改爲([0-9] +),表示0到9之間的數字,重複1次或多次 – Waygood 2013-05-09 09:01:41

+1

參考文獻:http://www.regular-expressions.info/reference.html和http://uk1.php .net/manual/zh/reference.pcre.pattern.syntax.php – Waygood 2013-05-09 09:07:58

+0

謝謝您的參考。我確實需要了解正則表達式,因爲我相信它會打開一個全新的世界。 – timstermatic 2013-05-09 09:09:45

回答

9

方括號在正則表達式中有特殊含義。你需要逃避它。另外*本身是沒有意義的。

這是一個修改器,這意味着zero or more of preceeding character所以你需要我添加了一個.這裏將匹配任何

最後以防止在前一個字符過比賽,你需要添加?,使小組賽非貪婪

preg_match_all('/\[page_(.*?)\]/', $content, $matches) 

如果你總是要匹配數字(即PAGE_1,page_2,page_3),更好的正則表達式woud是

preg_match_all("/\[page_(\d+)\]/", $content, $matches) 

\d+表示一個或多個數字

+0

這可以很好地解決問題。非常感謝。 我選擇後者,因爲我想強制匹配整數。 – timstermatic 2013-05-09 09:07:38

+0

很高興幫助。記得標記爲接受:)如果你發現它有用 – fullybaked 2013-05-09 09:11:18

+0

我必須再等30秒:) – timstermatic 2013-05-09 09:12:43