2012-02-01 80 views
1

我想從一個名字的.torrent得到一定的字符串,但我只得到這個從它:從字符串打印出一定的文字與的preg_match

array 
    0 => string 'e' (length=1) 

我做了什麼錯?這是preg_match我用:提前

preg_match('/[S(0-9)E(0-9)]/i', 'True.Blood.S04E12.SWESUB.PDTV.XviD-DSMEDiA', $matches);

感謝。

回答

0

刪除方括號並將它們放在數字的周圍,然後在它們後面加上+(意思是1或更多)。這樣,你得到整個S ##ē##串,加上單獨的數字:

preg_match('/S([0-9]+)E([0-9]+)/i', 'True.Blood.S04E12.SWESUB.PDTV.XviD-DSMEDiA', $matches); 
print_r($matches); 
/* output: 
Array 
(
    [0] => S04E12 
    [1] => 04 
    [2] => 12 
) 
*/ 

你也可以用\d

+0

非常感謝!這工作就像一個魅力:)我有點新正則表達式。 – Erik 2012-02-01 21:35:01

0

更換[0-9]我會建議使用:

preg_match('/S[0-9]{1,2}E[0-9]{1,2}/i', 'True.Blood.S04E12.SWESUB.PDTV.XviD-DSMEDiA', $matches); 

它得到out:

array(1) { [0]=> string(6) "S04E12" } 
0

以下正則表達式會返回適當的字符串。

/* Pattern: /\d{2}E\d{2}/ */ 
preg_match_all('/\d{2}E \d{2}/', '{{your data}}', $arr, PREG_PATTERN_ORDER); 
/*Result*/ 
Array 
(
    [0] => Array 
     (
      [0] => 04E12 
     ) 

)