I have been working on a small php app to perform a network scan and fill a database with the discovered information. The issue is that, depending on what you perform the scan with, the MAC addresses are in a number of different formats. This PHP functions validates a MAC and returns false if its not valid or a variety of formats depending on your needs! If anyone has any thoughts on improving this function feel free to let me know and I will post the updates.
function format_mac($mac, $format='linux'){ $mac = preg_replace("/[^a-fA-F0-9]/",'',$mac); $mac = (str_split($mac,2)); if(!(count($mac) == 6)) return false; if($format == 'linux' || $format == ':'){ return $mac[0]. ":" . $mac[1] . ":" . $mac[2]. ":" . $mac[3] . ":" . $mac[4]. ":" . $mac[5]; }elseif($format == 'windows' || $format == '-'){ return $mac[0]. "-" . $mac[1] . "-" . $mac[2]. "-" . $mac[3] . "-" . $mac[4]. "-" . $mac[5]; }elseif($format == 'cisco'){ return $mac[0] . $mac[1] . ":" . $mac[2] . $mac[3] . ":" . $mac[4] . $mac[5]; }else{ return $mac[0]. "$format" . $mac[1] . "$format" . $mac[2]. "$format" . $mac[3] . "$format" . $mac[4]. "$format" . $mac[5]; } } //some usage examples $rmac = "00:12:23:56:78:90"; echo format_mac($rmac,'cisco'); //0012:2356:7890 echo format_mac($rmac,'-'); //00-12-23-56-78-90 echo format_mac($rmac,'linux'); //00:12:23:56:78:90 echo format_mac($rmac,'?'); //00?12?23?56?78?90 |