douqianxian7008 2012-03-23 07:45
浏览 63
已采纳

preg_replace用后缀加上自身替换前缀

I have a list of mobile phone $numbers and i have to change them, prefixing the number 39, if the number itself starts with one in $prefixes array.

I don't now how to back referencing to the found prefix, or (it's the same) how to get the matched prefix). I've tried the following but it's not working:

$numbers  = array('3284121532', '3478795687'); // the subject
$prefixes = array('328', '347');               // (will be) the pattern

// Build regex for each element of $prefix array
$pattern = array_map(function($s) { return "/^$s/"; }, $prefixes);
$replace = "39\{$1}";

var_dump(preg_replace($pattern, $replace, $numbers);

Any help would be appreciated, thanks.

  • 写回答

3条回答 默认 最新

  • douke9545 2012-03-23 07:55
    关注
    $numbers  = array(3284121532, 3478795687);
    $prefixes = implode('|',array(328, 347));
    
    $numbers = array_map(function($n) use ($prefixes) {
        return preg_replace("/^($prefixes)/", '39$1', $n);
    }, $numbers);
    
    print_r($numbers);
    

    The above will output

    Array
    (
        [0] => 393284121532
        [1] => 393478795687
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型