2010-03-27 22 views
2

任何人可以幫助我解決這個問題:正則表達式切片文件名包含字符串和數值

我得到

$filename= "index 198.php"; 

我用這個和失敗的

preg_match(" [a-zA-Z0-9]", $filename, $output); 

我有什麼樣的正則表達式模式使用這樣的$輸出陣列將包括一個號碼只有值。

回答

2

如果要提取只是從文件名,你可以做數量:

$filename= "index 198.php"; 
if(preg_match('#(\d+)#',$filename,$matches)) 
    echo $matches[1]; // prints 198 

它假設該文件的名稱只有一個組數字。如果有多於一組數字,如index 123 abc 456.php,則只有第一組將被匹配。

注:

使用的正則表達式是:(\d+)

  • \d:短切的[0-9]。甲 單個數字
  • \d+:一個或多個數字,基本上 若干
  • ():以組並記住匹配。 它會在$matches arrray中被記住。
  • ##:分隔符。 preg_家庭的 函數期望第一個參數 這是正則表達式在一對 分隔符。您也可以使用 也使用'/(\d+)/'
+0

我們怎樣讀 '#(\ d +)#'? – justjoe 2010-03-27 09:07:28

+0

@justjoe:更新了我的答案。 – codaddict 2010-03-27 09:12:10

+0

謝謝,這非常有幫助。我會更多地學習這個話題。 – justjoe 2010-03-27 09:14:30

1

一個數字只對嗎?

$filename= "index 198.php"; 
preg_match_all("/(\d+)/",$filename,$matches); 
print_r($matches[1]); 

獲得更多的數字,使用preg_match_all()

相關問題