好的,所以我有一个包含字符串 (407)888-9999 的变量 $phone,我有这个代码
if($phone != ''){ $phone = "<span id='telephone'>{$phone}</span>";}
return $phone;
Run Code Online (Sandbox Code Playgroud)
这工作正常,但现在客户希望在区号和接下来的三个数字之间有一些填充。所以我需要代码像这样
<span id='telephone'><span class='spacer'>(407)</span>888-9999</span>";
Run Code Online (Sandbox Code Playgroud)
鉴于没有其他人提到这一点,我会从数字中删除所有非数字字符。完成后,您可以使用正则表达式轻松获取数字,这样任何格式都是有效的,并且几乎无论用户输入什么,您都可以按照您想要的方式对其进行格式化:
$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.";
}
Run Code Online (Sandbox Code Playgroud)
只要有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.";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2911 次 |
| 最近记录: |