2012-07-17 21 views
2

我正在從我使用的舊CMS轉換一些shortcode信息。在一些文章正文,我需要一些預先存在的標註正則表達式在PHP中返回數組

{image id="27411" shape="landscape" align="right"} 

獲得ID可以有文本的一個身體內有多個標註這樣的。有沒有辦法將這些信息作爲ID數組返回?唯一重要的信息是身份證,其餘都是無關緊要的。

回答

4

如果它總是在格式,使用preg_match_all(),像這樣:

preg_match_all('#\{image id="(\d+)"[^\}]+\}#', $input, $matches); 

你的ID陣列將在$matches[1]

因此,對於您輸入例,這outputs

array(1) { 
    [0]=> 
    string(5) "27411" 
} 
+0

我認爲'{'必須/應該被轉義,因爲'{...}'劃定了重複s pecifiers。這隻會是一個錯誤,因爲這裏沒有任何先例。但它使修改更難。 – PointedEars 2012-07-17 15:21:14

+0

@PointedEars - [它仍然有效](http://viper-7.com/C2aXDK)如果有東西在它之前。雖然這是一個很好的做法,我會更新我的答案,但我相信這是有效的,因爲'{'後面沒有數字。 – nickb 2012-07-17 15:22:50

1

下面的模式應該做的工作:

/image id\="(\d+)"/ 

所需的ID是組1

Demo