如何使用php将电话号码拆分为带空格的字符串

如何使用php将电话号码拆分为带空格的字符串,php,regex,Php,Regex,我有不同的字符串,包含如下电话号码: New order to car wash #663. Customer number is 7962555443. Thank you. 7 9 6 2 5 5 5 4 4 3 或 或 我需要这个: New order to car wash #663. Customer number is 7 9 6 2 5 5 5 4 4 3. Thank you. 或 或 我需要分隔包含3个以上符号的数字。试试这个 $phonenumber="79625554

我有不同的字符串,包含如下电话号码:

New order to car wash #663. Customer number is 7962555443. Thank you.
7 9 6 2 5 5 5 4 4 3

我需要这个:

New order to car wash #663. Customer number is 7 9 6 2 5 5 5 4 4 3. Thank you.

我需要分隔包含3个以上符号的数字。

试试这个

$phonenumber="7962555443";
$formatted = implode(' ',str_split($phonenumber));

您可以使用内爆,只需先使用
str\u split
即可将字符串转换为数组:

$number="905488739038";    
$formatted = implode(' ',str_split($number));

echo $formatted;
输出:

9 0 5 4 8 8 7 3 9 0 3 8

Ref:

您可以为此使用回调:

$str = preg_replace_callback('~\b\d{4,}~', 
     function($m) {
        return implode(' ', str_split($m[0]));
     }, $str);

preg\u replace
单独使用而不使用任何回调函数就足够了

preg_replace('~#\d+(*SKIP)(*F)|(?<=\d)(?=\d)~', ' ', $str);

preg_replace('~#\d+(*SKIP)(*F)|)(?您也可以尝试使用此正则表达式:

((?:(?:\d)\s?){4,})
它将捕获长度为4或4以上的所有数字。此外,您还需要执行一个附加步骤,从结果的匹配项中删除空格,如下所示:

New order to car wash #663. Customer number is 7962555443. Thank you.
7 9 6 2 5 5 5 4 4 3

也可以使用。替换为匹配的数字+空格:
“$0”

我需要将包含3个以上符号的数字分开

  • \b\d
    匹配一个
    \b
    后跟一个数字(
    \d
    表示
    [0-9]
  • (?=\d{3})
    在第一个
    \d
    之后使用a检查下一个3也是数字
  • |\G\d\B
    或在前一个匹配的
    \G
    结尾处匹配一个数字,后跟
    \B
    非单词边界
请参阅或处的测试



作为替代方案,您还可以替换水平空格后的第一个数字:

显示您尝试了什么!谢谢。这正是我想要的!谢谢!您的代码帮助我提高了我的正则表达式技能。再次使用Tnx。
((?:(?:\d)\s?){4,})
7 9 6 2 5 5 5 4 4 3
$str = preg_replace('~\b\d(?=\d{3})|\G\d\B~', "$0 ", $str);