Cảm ơn bạn trước cho bạn thời gian trong việc giúp đỡ với vấn đề này ..preg_match(): Compilation failed: phạm vi không hợp lệ trong lớp ký tự bù đắp 20
preg_match(): Compilation failed: phạm vi không hợp lệ trong lớp nhân vật tại offset 20 session.php trên đường dây 278
tôi không chắc chắn tại sao điều này Ngưng làm việc tất cả của một đột ngột sau nhiều tháng làm việc nó có thể là một bản nâng cấp trong các mã ..
đây là mã
else{
/* Spruce up username, check length */
$subuser = stripslashes($subuser);
if(strlen($subuser) < $config['min_user_chars']){
$form->setError($field, "* Username below ".$config['min_user_chars']."characters");
}
else if(strlen($subuser) > $config['max_user_chars']){
$form->setError($field, "* Username above ".$config['max_user_chars']."characters");
}
/* Check if username is not alphanumeric */
/* PREG_MATCH CODE */
else if(!preg_match("/^[a-z0-9]([0-9a-z_-\s])+$/i", $subuser)){
$form->setError($field, "* Username not alphanumeric");
}
/* PREG_MATCH CODE */
/* Check if username is reserved */
else if(strcasecmp($subuser, GUEST_NAME) == 0){
$form->setError($field, "* Username reserved word");
}
/* Check if username is already in use */
else if($database->usernameTaken($subuser)){
$form->setError($field, "* Username already in use");
}
/* Check if username is banned */
else if($database->usernameBanned($subuser)){
$form->setError($field, "* Username banned");
}
}
... hoặc bản thân PHP đã được nâng cấp. Theo RegexBuddy, PHP 5.5 yêu cầu dấu gạch ngang được thoát hoặc di chuyển đến cuối danh sách nếu bạn muốn nó khớp với dấu gạch ngang theo chữ. Trước đó, rõ ràng, nó chỉ giả định bạn có nghĩa là bởi vì '_- \ s' không có ý nghĩa như một phạm vi. –
Có, PHP cũng bao gồm một phiên bản PCRE, vì vậy sẽ kết thúc với cùng một vấn đề. Nắm bắt tốt. – MatsLindh
@AlanMoore: một khả năng biết quá ít là đặt dấu gạch nối ngay sau một lớp ký tự viết tắt: '\ s-_' –