I updated the code below to handle the local call and toll free AU number format as well (1300 and 1800).
function phone($phone)
{
$stripped = preg_replace("/", "", $phone);
if(strlen($stripped) == 7)
{
$stripped = preg_replace("/({3})({4})/", "$1-$2",$stripped); // Non-AU xxx-xxxx format
return $stripped;
}
elseif(strlen($stripped) == 8)
{
$stripped = preg_replace("/({4})({4})/", "$1 $2",$stripped); // AU No Area Code
return $stripped;
}
elseif(strlen($stripped) == 10)
{
$stripped = preg_replace("/(04{2})({3})({3})/", "($1) $2 $3",$stripped); // AU Mobile Phones
$stripped = preg_replace("/(0{1})({4})({4})/", "($1) $2 $3",$stripped); // AU Area Code
$stripped = preg_replace("/(1300)({3})({3})/", "$1 $2 $3",$stripped); // AU 1300
$stripped = preg_replace("/(1800)({3})({3})/", "$1 $2 $3",$stripped); // AU 1800
$stripped = preg_replace("/({3})({3})({4})/", "($1)-$2-$3",$stripped); // Non-AU xxx-xxx-xxxx format
return $stripped;
}
elseif(strlen($stripped) == 11)
{
$stripped = preg_replace("/(61)(4{2})({3})({3})/", "0$2 $3 $4",$stripped); // AU International Mobile
$stripped = preg_replace("/(61)({1})({4})({4})/", "0$2 $3 $4",$stripped); // AU International
$stripped = preg_replace("/(1)({3})({3})({4})/", "$1-($2)-$3-$4",$stripped); // US International 1-xxx-xxx-xxxx format
return $stripped;
}
else
{
return "(" . $stripped . ")"; // Returns the stripped string in parenthesis to highlight a need to update this function
// return $phone;
}
}