首页 > 解决方案 > 检查手机号码CF7

问题描述

我有一个向 CRM 提交数据的 ContactForm7 表单。一切正常,但现在我需要区分移动电话和固定电话号码。如果一个号码以 07 开头,它将被接受为手机号码。

查看其他线程我尝试了以下但现在移动或电话字段都没有被填充到 crm 或被传递到日志文件?

 function process_contact_form_data( $contact_form ) {
     $title = $contact_form->title;
     $submission = WPCF7_Submission::get_instance();

     if ( $submission ) {
        $posted_data = $submission->get_posted_data();
     }


    if ( 'Quote Form_Contact' || 'Quote Form_Product' || 'Quote Form'  == $title ) {

      $firstName = $posted_data['user_first_name'];
      $lastName = $posted_data['user_last_name'];
      $email= $posted_data['your-email'];
      $phone = $posted_data['your-number'];
      $message = $posted_data['your-message'];
      $bp = $posted_data['BP'][0];

      $phone = $pattern;    
      $pattern = "/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/";
      $match = preg_match($pattern,$phone);
      if ($match != false) {$mobile = $phone;} else {$mobile= '';};
    }

    $error = false;
    try
    {
    $relationshipId =   postRelationship($firstName,$lastName,$email,$phone,$bp);
    $opportunityId = postOpportunity($relationshipId,$message);
    postOpportunityNote($relationshipId,$opportunityId,$message);
      //  postTask($relationshipId);
    }
    catch (Exception $e)
    {
      $error=true;
    }
    if($error || !isset($relationshipId) || !isset($opportunityId) || $relationshipId <= 0 || $opportunityId <= 0)
    {
      $log->lfile(ABSPATH . 'quotevine.log');
      $log->lwrite('ERROR: With Email Address ' . $email);
      $log->lclose();
    }
 }
 add_action( 'wpcf7_before_send_mail', 'process_contact_form_data');

标签: phpregex

解决方案


您正在用未定义的变量覆盖$phone此行中的变量,这将导致为 NULL。$phone = $pattern;$phone

但是在注释掉该行之后, 的值$mobile仍然不正确,因为手机号码以手机号码开头,07并且正则表达式同时匹配固定电话和手机号码,例如:

07123123123
+447123123123

您可以做的是,如果匹配成功,请检查字符串是否以开头+44以验证它是手机号码。 preg_match如果发生错误则返回false,但我认为您想验证匹配是否正确。

$phone = "+447123123123";
$pattern = "/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/";
$mobile= '';

if (preg_match($pattern,$phone) && 0 === strpos($phone, '07')) {
    $mobile = $phone;
}

推荐阅读