2012-01-21 129 views

回答

3

只有字符串恰好是一個數字,你的正則表達式纔會匹配。爲了配合內的報價,使用數字:

preg_match("/'(\d+)'/", $linkvar, $result); 
var_dump($result[1]); 
4

你的正則表達式只有在整個串是由建立,因爲^$修飾符的一個號碼相匹配。您當前的正則表達式在人類語言翻譯成:

  1. ^的意思是「這是字符串的開始」
  2. [0-9]的意思是「匹配單個數字字符」
  3. $的意思是「這是的結束字符串」

將其更改爲:

preg_match("[0-9]+",$linkvar,$result); 

或替換地,匹配的號碼的速記語法:

preg_match("\d+",$linkvar,$result); 

+修飾符意味着「一個或多個」的數字必須被發現它是一個匹配。

此外,如果你想實際捕獲字符串中的數字,你需要添加圓括號來通知preg_match你實際上想要「保存」數字。

1

^和$匹配的字符串,這意味着你正在尋找一個只包含數字字符串的開始和結束。刪除它們並添加一個加量詞,只留下「[0-9] +」,它會在字符串中找到第一組數字。

preg_match("[0-9]+",$linkvar,$result);