2012-01-21 93 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);