代码之家  ›  专栏  ›  技术社区  ›  Cat Wjy

如何在PHP中添加数字“1”作为电话号码的前缀?

  •  0
  • Cat Wjy  · 技术社区  · 9 年前

    我想在电话号码变量$toNumbers前面添加数字1“1”。我已经尝试了PHP字符串

    $toNumbers = '1'.$toNumbers;
    

    在电话号码前附加1,但无法使其生效。我在这里做错了什么?

    下面是来自vTiger SMS模块的,我需要在数字格式前面加一个1,以便发送。我想在每个数字前面加上1,以便短信模块正确发送。问题是,我的所有电话号码都存储为(xxx)xxx-xxxx,而不是1(xxx)xxx-xxx。

    public function send($message, $toNumbers) {
    
        if(!is_array($toNumbers)) {
            $toNumbers = '1'.$toNumbers;
            $toNumbers = array($toNumbers);
        }
    
    
        $params = $this->prepareParameters();
    
        $params['text'] = $message;
        $params['to'] = implode(',', $toNumbers);
    
    
        $serviceURL = $this->getServiceURL(self::SERVICE_SEND);
        $httpClient = new Vtiger_Net_Client($serviceURL);
        $response = $httpClient->doPost($params);
        $responseLines = split("\n", $response);
    
        $results = array();
        $i=0;
        foreach($responseLines as $responseLine) {
            $responseLine = trim($responseLine);
            if(empty($responseLine)) continue;
    
            $result = array( 'error' => false, 'statusmessage' => '' );
            if(preg_match("/ERR:(.*)/", trim($responseLine), $matches)) {
                $result['error'] = true;
                $result['to'] = $toNumbers[$i++];
                $result['statusmessage'] = $matches[0]; // Complete error message
            } else if(preg_match("/ID: ([^ ]+)TO:(.*)/", $responseLine, $matches)) {
                $result['id'] = trim($matches[1]);
                $result['to'] = trim($matches[2]);
                $result['status'] = self::MSG_STATUS_PROCESSING;
            } else if(preg_match("/ID: (.*)/", $responseLine, $matches)) {
                $result['id'] = trim($matches[1]);
                $result['to'] = $toNumbers[0];
                $result['status'] = self::MSG_STATUS_PROCESSING;
            } 
            $results[] = $result;
        } 
        return $results;
    } 
    
    2 回复  |  直到 9 年前
        1
  •  1
  •   Youcef Moulahoum    9 年前

    你必须在以下情况下处理案件 $toNumbers 是数组,请尝试以下操作:

    if(!is_array($toNumbers)) 
    d{
        $toNumbers = '1'.$toNumbers;
        $toNumbers = array($toNumbers);
    }
    else
    {
        foreach ($toNumbers as $key => $field) 
             $toNumbers[$key] = '1'.$toNumbers[$key];
    }
    
        2
  •  0
  •   Chris G    9 年前
    if(!is_array($toNumbers)) {
        $toNumbers = '1'.$toNumbers;
        $toNumbers = array($toNumbers);
    }
    

    它甚至会进入这个代码块吗?$toNumbers已经是数组了吗?(您可能希望以任何一种方式处理这种情况。)