正则表达式数字提取

时间:2012-08-01 07:45:46

标签: regex

我在从数据库中提取的文本中有这些标记 [ATTACH = CONFIG] 9 [/ ATTACH]我试图在这种情况下提取数字9。

我的第一次尝试

$images = preg_match_all(#\[ATTACH.*?\[/ATTACH\]#si, $article['pagetext'], $images['matches']);
    $image = $images['matches'][1][0];

没有返回任何东西。

有人可以帮我正确使用正则表达式吗?谢谢。

2 个答案:

答案 0 :(得分:0)

这个正则表达式

#([0-9]+)#

会更好。

结果将在$images['matches'][1]

如果您只需要ATTACH标记内的数字:

#\[ATTACH[^]]*]([0-9]+)\[/ATTACH]#

答案 1 :(得分:0)

我用php5.4.5测试了以下代码:

    <?php
$article = array();
$article['pagetext'] = '[ATTACH=CONFIG]9[/ATTACH][ATTACH=CONFIG]10[/ATTACH]';
$images = array();
$images['matches'] = array();
if(preg_match_all('/[ATTACH[^\]]*\](\d+)\[\/ATTACH\]/i', $article['pagetext'], $images['matches']) > 0){
    # will print out "9", "10"
    for($i = 0; $i < count($images['matches'][1]); ++$i)
        printf("%s\n", $images['matches'][1][$i]);
}

?>
相关问题