2012-08-10 63 views
3

我有以下代码:新手PHP正则表达式问题

<?php 
     $data="000ffe-fcc9f4 1 000fbe-fccabe"; 
     $pattern='/([0-9A-F]{6})-([0-9A-F]{6})$/i'; 
     echo "the pattern we are using is: ".$pattern."<BR>"; 

     preg_match_all($pattern,$data,$matches, PREG_SET_ORDER); 

     print_r($matches[0]); 

>

我不明白为什么它没有找到这两个MAC地址作为匹配?

下面是页面上的输出看起来像:

the pattern we are using is: /([0-9A-F]{6})-([0-9A-F]{6})$/i 
Array ([0] => 000fbe-fccabe [1] => 000fbe [2] => fccabe) 

我期待这个元素[0]将包含两个000ffe-fcc9f4和000fbe-fccabe。 你能告诉我我做错了什么吗?

谢谢。

回答

3

找不到它们的原因是因为在正则表达式的末尾有一个$,这意味着它只会匹配字符串末尾的那个模式。

尝试更改$pattern/([0-9A-F]{6})-([0-9A-F]{6})/i并且应该匹配两者。

+0

doh!非常感谢你。修复它 – dot 2012-08-10 00:56:01

+1

http://ideone.com/GSp1W – 2012-08-10 01:00:51