3

私は次のコードを持っています:

 <?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の両方が含まれると予想していました。私が間違っていることを教えてもらえますか?

ありがとう。

4

1 に答える 1

3

両方が見つからない理由は$、正規表現の最後にがあり、文字列の最後にあるそのパターンにのみ一致することを意味するためです。

に変更$patternしてみてください/([0-9A-F]{6})-([0-9A-F]{6})/i。両方に一致するはずです。

于 2012-08-10T00:38:27.293 に答える