我的PHP脚本中的preg_replace不起作用

inc*_*ito 0 php regex preg-replace

我有一个用户表单,我在其中一个字段中输入了一个电话号码作为输入.我有两个单独的RegEx语句检查输入.

第一个是:

preg_match('/^([\(]{1}[0-9]{3}[\)]{1}[\.| |\-]{0,1}|^[0-9]{3}[\.|\-| ]?)?[0-9]{3}(\.|\-| )?[0-9]{4}$/', $phone);

它很棒.它可以识别许多不同的格式,即222-333-4444或2224445555.

另一方面,当我尝试:

preg_replace('/\+?1?[-\s.]?\(?(\d{3})\)?[-\s.]?(\d{3})[-\s.]?(\d{4})/g', '($1) $2-$3', $phone);

应该将传入的字符串格式化为(222)333-4444格式,$ phone在preg_replace()调用后保持不变.

任何帮助都感激不尽!

dec*_*eze 8

只是为了确保:你需要捕获返回值,preg_replace不直接修改参数:

$phone = preg_replace(..., $phone);
Run Code Online (Sandbox Code Playgroud)