2012-08-01 92 views
0

我有這些標籤從數據庫中拉出來的文本 [ATTACH = CONFIG] 9 [/ ATTACH],我試圖提取數字,在這種情況下,9。正則表達式數字提取

我第一次嘗試

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

不返回任何東西。

有人可以幫助我適當的正則表達式嗎?謝謝。

回答

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]); 
} 

?> 
+0

謝謝。這工作正常 – lionel28 2012-08-01 08:24:26

0

這個正則表達式

#([0-9]+)# 

會更好。

結果將在$images['matches'][1]

如果您需要僅是內部ATTACH標籤號碼:

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

謝謝。 $ images = preg_match_all('#\ [ATTACH [^]] *]([0-9] +)\ [/ ATTACH]#',$ images ['matches']);告訴我警告:preg_match_all()期望至少3個參數,給出2個 – lionel28 2012-08-01 08:00:15

+0

當然。你錯過了'$ article ['pagetext']' – 2012-08-01 09:13:03