2012-10-04 174 views
1

雖然我可以在正則表達式中找到很多教程,但它仍然在我的掌握之上。我想創建的正則表達式很簡單(通過我在某些示例中看到的內容來判斷),但我根本無法弄清楚。需要正則表達式幫助

我想做一個簡單的更換如下:

  1. 我保存在MySQL表圖像元數據,與字段:ID,姓名,職務和alt。
  2. 在我的內容,我想寫[[IMAGE:1:right]]content here[[image:2:left]].
  3. 我想要得到的ID(數字)和浮子(左或右)的比賽和替換圖像整個字符串飄然向左或向右,檢索由數據庫表中的ID。

這裏是我的嘗試:

preg_match("/^\[\[image:(\d+):(left|right)\]\]+/i", "[[IMAGE:1:right]]content here[[image:2:left]]", $matches); 

這給我的回報:

Array ([0] => [[IMAGE:1:right]] [1] => 1 [2] => right) 

所以,找到一個,但我想它找到所有這些,因爲我可能在帖子中有多個圖片。據我所知,+應該匹配所有條目,並且我應該匹配大小寫不敏感。看起來好像不區分大小寫的方式起作用,但我只能得到一個回報。

有人能讓我知道我在做什麼錯嗎?

回答

0

這並不完全如此。那+只適用於它之前的令牌 - ]。你想用Perl語言進行匹配global,對於PHP(我認爲你正在使用?)意味着調用函數preg_match_all()。您還必須刪除^,因爲只有一個圖像出現在字符串的開頭。

此外,[]在正則表達式的特殊字符 - 所以請逃脫他們,當你想要一個文字支架通過寫\[\[\]\]

+0

我的歉意。我甚至沒有注意到。在我的正則表達式中,我確實有逃脫的支架,它必須在原始文章中逃脫。所以這種非扭曲的bra is不是問題。刪除^並更改爲preg_match_all正是我所需要的。非常感謝! –