我尝试使用ereg
函数从PHP(可能存储在CSV文件中)的字符串中获取具有特定格式(02:AA:13:09:45:DE)的所有数据用PHP。
这就是我的尝试:
$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
函数),还有其他方法可以实现此功能(获取所有数据)吗?
答案 0 :(得分:2)
好吧,preg_match
或preg_match_all
是最佳选择,而ereg是dead。
所以你的替代品有点脏。
$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;
}
}
}