在php中拆分电话号码
好的,我有一个变量$phone,它包含字符串(407)888-9999,我有这个代码在php中拆分电话号码,php,css,Php,Css,好的,我有一个变量$phone,它包含字符串(407)888-9999,我有这个代码 if($phone != ''){ $phone = "<span id='telephone'>{$phone}</span>";} return $phone; if($phone!=''){$phone=“{$phone}”;} 退回$phone; 这很好,但现在客户端希望在区号和接下来的三个数字之间有一些填充。所以我需要这样的代码 <span id='telephon
if($phone != ''){ $phone = "<span id='telephone'>{$phone}</span>";}
return $phone;
if($phone!=''){$phone=“{$phone}”;}
退回$phone;
这很好,但现在客户端希望在区号和接下来的三个数字之间有一些填充。所以我需要这样的代码
<span id='telephone'><span class='spacer'>(407)</span>888-9999</span>";
(407)888-9999”;
您确定字符串的格式正确吗?如果正确,您可以将其拆分为子字符串:
$phone = "<span id='telephone'><span class='spacer'>{substr($phone, 0, 5)}</span>{substr($phone, 5, 8)}";
$phone=“{substr($phone,0,5)}{substr($phone,5,8)}”;
如果电话号码的格式始终相同,您可以将其拆分为:
list($area,$phone1,$phone2) = sscanf($phone,'(%d)%d-%d');
或
你可以做:
$input = "(407)888-9999";
$area_code = '';
$ph_num = $input;
if(strpos($input,')') !== false) { // if area-code is present.
list($area_code,$ph_num) = explode(')',$input);
$area_code .= ')';
}
你需要:
如果没有其他人提到这一点,我将从数字中删除所有非数字字符。完成后,您可以使用正则表达式轻松获取数字,这样一来,任何格式都是有效的,并且无论用户输入什么,您都可以按照您的需要对其进行格式化:
$phone = preg_replace("~[^0-9]~", "", $phone);
preg_match('~([0-9]{3})([0-9]{3})([0-9]{4})~', $phone, $matches);
if (!empty($matches)) {
$display = "<span id='telephone'><span class='spacer'>(" .
$matches[1] . ")</span>" . $matches[2] . "-" . $matches[3] . "</span>";
}else {
$display = "An invalid phone number was entered.";
}
你可以用这样一个简单的str_替换,只要你确定电话号码在区号周围有括号
$phone = "(902)555-1234";
if($phone != ''){
$phone = str_replace(")", ") ",$phone);
$phone = "<span id='telephone'>{$phone}</span>";
}
return $phone;
$phone=“(902)555-1234”;
如果($phone!=''){
$phone=str_替换(“),”,$phone);
$phone=“{$phone}”;
}
退回$phone;
如果已知字符串已正确格式化(通过任何以前的验证),则正则表达式是多余的—过于复杂,处理器过于消耗。引用经常引用的Jamie Zawinski的话:“有些人在遇到问题时,会认为‘我知道,我会使用正则表达式’。现在他们有两个问题。“@James Burgress,虽然很有趣,有时甚至可能是低谷,但有很多有效的好地方可以使用正则表达式。解析电话号码就是这样的一个领域。当然,但只需插入一个空格(这是OP请求的全部内容,我们假设他已经验证了号码格式),正则表达式是多余的。另一方面:如果你不知道字符串的格式是否正确,这将失败,并出现一系列错误:)在这种情况下,你需要很多额外的逻辑来找出字符串的正确格式。在这种情况下,正则表达式可能证明是一个更简单的解决方案。如果从用户检索数据,我会同意。然而,在这种情况下,应该进行更多的消毒(超出了这个问题的范围)。如果数据是从数据库中检索的,那么您可以假定数据在输入期间已被清理,从而节省一些不需要的开销。
$phone = preg_replace("~[^0-9]~", "", $phone);
preg_match('~([0-9]{3})([0-9]{3})([0-9]{4})~', $phone, $matches);
if (!empty($matches)) {
$display = "<span id='telephone'><span class='spacer'>(" .
$matches[1] . ")</span>" . $matches[2] . "-" . $matches[3] . "</span>";
}else {
$display = "An invalid phone number was entered.";
}
$phone = preg_replace("~[^0-9]~", "", $phone);
if (strlen($phone) == 10) {
$display = "<span id='telephone'><span class='spacer'>(" .
substr($phone,0,3) . ")</span>" . substr($phone,2,3) . "-" . substr($phone,5,4) . "</span>";
}else {
$display = "An invalid phone number was entered.";
}
$phone = "(902)555-1234";
if($phone != ''){
$phone = str_replace(")", ") ",$phone);
$phone = "<span id='telephone'>{$phone}</span>";
}
return $phone;