好的,我有一个包含字符串 (407)888-9999 的变量 $phone,我有这个代码
if($phone != ''){ $phone = "<span id='telephone'>{$phone}</span>";}
return $phone;
这工作正常,但现在客户希望在区号和接下来的三个数字之间有一些填充。所以我需要代码是这样的
<span id='telephone'><span class='spacer'>(407)</span>888-9999</span>";
最佳答案
鉴于没有其他人提到这一点,我会从数字中删除所有非数字字符。完成后,您可以使用正则表达式轻松获取数字,这样任何格式都是有效的,并且几乎无论用户输入什么,您都可以按照自己的意愿进行格式化:
$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.";
}
只要有 10 位数字,无论如何输入电话号码都应该这样做。
更新
您也可以将 preg_replace
技术与 substr
一起使用,而无需 preg_match
。这实际上是我的首选解决方案。
$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.";
}
关于php - 在php中拆分电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3761237/