php - 检查手机号码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');
解决方案
您正在用未定义的变量覆盖$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;
}
推荐阅读
- elasticsearch - 在 Elassandra 中无法访问弹性搜索 url
- deep-learning - 使用不同的测量单位计算神经网络输出的损失 (MSE)
- html - 应用程序脚本 - 获取侧边栏信息
- reactjs - 带有功能组件的功能道具 - 不是功能(React + Typescript)
- c# - foreach 循环中的多线程
- docker - Docker secret 挂载一个空字符串
- kotlin - Mapbox Android:调整背景层的不透明度
- python - SqlAlchemy 时间戳的区别
- asp.net - 如何在身份服务器 4 中获取设备代码流的用户代码
- c++ - 结构变量成员后的花括号是什么意思?