如何在字符串中间添加字符?
我正在尝试将美国数字(例如2121231234)格式化为带有破折号的数字:212-123-1234。
我事先并不知道数字串会持续多长时间,
它可能是12121231234,它甚至可能是0012121231234,
在这种情况下,我希望它分别变成1212-123-1234和001212-123-1234。
到目前为止,这是我提出的:
$phone_number = '2121231234';
$phone_number = str_split($phone_number); // [2,1,2,1,2,3,1,2,3,4]
$phone_number = array_reverse($phone_number); // [4,3,2,1,3,2,1,2,1,2]
array_splice($phone_number, 4, 0, '-'); // [4,3,2,1,-,3,2,1,2,1,2]
array_splice($phone_number, 8, 0, '-'); // [4,3,2,1,-,3,2,1,-,2,1,2]
$phone_number = array_reverse($phone_number); // [2,1,2,-,1,2,3,-,1,2,3,4]
$phone_number = implode($phone_number); // "212-123-1234"
哪个有效,但似乎要完成这么简单的任务太多了。
我错过了什么?
答案 0 :(得分:7)
使用regular expressions尝试:
echo preg_replace('/^(.*?)(.{3})(.{4})$/', '$1-$2-$3', $telnum);
答案 1 :(得分:2)
试试吧
$phone_number = "2121231234";
$phone_number = substr($phone_number, 0, 3) . '-' . substr($phone_number, 3, 6) . ' - '.
substr($phone_number, 6, strlen($phone_number));
答案 2 :(得分:1)
喜欢这样
$phone_number = substr_replace($phone_number, '-' , strlen($phone_number)-7 , 0);
$phone_number = substr_replace($phone_number, '-' , strlen($phone_number)-4 , 0);