-1
我試圖驗證美國電話號碼字段,並返回錯誤,如果輸入到該字段的信息無效。它目前不接受任何信息進入,即使正則表達式似乎有效,有效期:PHP preg_match正則表達式不工作
add_action('register_form','myplugin_register_form2');
function myplugin_register_form2(){
$phone_number = (isset($_POST['phone_number'])) ? $_POST['phone_number']: '';
?>
<p id="phone_number">
<label for="phone_number"><?php _e('Phone Number <font size="1">(XXX XXX XXXX)</font>','mydomain') ?><br />
<input type="text" name="phone_number" id="phone_number" class="input" size="25" style="text-align:right" maxlength="14" />
</p>
<?php
}
//2. Phone_number Requirement
add_filter('registration_errors', 'myplugin_registration_errors2', 10, 3);
function myplugin_registration_errors2 ($errors, $sanitized_user_login, $user_email) {
$pattern = '/^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$/';
if (!preg_match($pattern, $phone_number, $matches))
{
$errors->add('phone_number_error', __('<strong>ERROR</strong>: You must include a valid phone number.','mydomain'));
return $errors;
}
if (empty($_POST['phone_number']))
$errors->add('phone_number_error', __('<strong>ERROR</strong>: You must include a valid phone number.','mydomain'));
return $errors;
}
嘗試在輸入字段上使用修剪或嘗試其他正則表達式。 – Lorenz
http://stackoverflow.com/questions/3357675/validating-us-phone-number-with-php-regex有一個解決方案 – Lorenz
感謝Aragon0,但是當使用上面的正則表達式,並調整最後的代碼位以匹配功能我尋求'的foreach($ aNumbers爲$ sNumber){ 如果{$ 錯誤 - >添加( 'phone_number_error',__(」 錯誤(的preg_match($ sPattern,$ PHONE_NUMBER,$ aMatches)!):您必須包含有效的電話號碼。','mydomain')); return $ errors; } \t}'它不起作用。它一直告訴我這個號碼是無效的。 – Helena