0

ereg我尝试使用 PHP 中的函数从使用 PHP(可能存储在 CSV 文件中)的字符串中获取具有特定格式(02:AA:13:09:45:DE)的所有数据。

这是我尝试过的:

$string = '02:AA:13:09:45:DE -90 hRm / -21 450 s RX: 1.0 , 1 . TX: 2.0 , MCS 0, 1 . 13:09:13:10:15:5D -33 hRm / -55 5000 s RX: 66.0 , MCS 0, 333 . TX: 66.0, MCS 0, 333 . 17:09:A3:07:30:DC -55 hRm / -22 hRm 456 s RX: 43.0  MCS 0, 434. TX: 43.0 , MCS 0, 43 .'

$pattern='^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}';
ereg($pattern, $string, $matches);
print_r($matches);

这仅给出第一个值:02:AA:13:09:45:DE. 由于我不应该使用preg_match_all(或任何其他preg功能),有没有其他方法可以实现这一点(获取所有数据)?

4

1 回答 1

2

好吧,preg_matchorpreg_match_all是最好的选择,而 ereg 已经死了

所以你的选择有点脏。

$items = explode(" ", $string);
foreach($items as $item) {
    $chunks = explode(":", $item);
    // check current item. If consist of 6 hex digits separated by :
    if (count($chunks) == 6) {
        $valid = TRUE;
        // all numbers must be hex!
        foreach($chunks as $chunk) {
            if (!ctype_xdigit($chunk)) {
                $valid = FALSE;
                break;
            }
        }
        if ($valid) {
            echo $item;
        }

    }
}
于 2013-11-11T08:03:23.813 回答