2012-07-17 118 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