编译失败:偏移量为12的字符类中的范围乱序

时间:2013-11-09 16:10:52

标签: php html

我有一个非常基本的HTML表单,文本框定义为

<li id="li_1" >
<label class="description" for="element_1">O teu nome </label>
<span>
<input id="element_1_1" name= "element_1_1" class="element text" pattern="[a-z0-9. -]+" maxlength="255" size="8" value=""/>
<label>Primeiro</label>
</span>
<span>
<input id="element_1_2" name= "element_1_2" class="element text" pattern="[a-z0-9. -]+" maxlength="255" size="14" value=""/>
<label>Apelido</label>
</span> 

使用

在名为email_send_pt.php的php文件中验证此输入
// validation expected data exists
if(!isset($_POST['element_1_1']) ||
!isset($_POST['element_1_2']) ||
!isset($_POST['element_2']) ||{
died('Lamentamos, mas constam erros no seu registo.'); 
}

$first_name = $_POST['element_1_1']; // required
$second_name = $_POST['element_1_2']; // required
$email = $_POST['element_2']; // required

$error_message = "";
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$first_name) ||
!preg_match($string_exp,$second_name)) {
$error_message .= 'O nome que preencheu não parece ser válido.<br />';
}

我得到一个常量“编译失败:第45行的email_send_pt.php中第12位的字符类中的范围乱序”

第45行是“if(!preg_match($ string_exp,$ first_name)||”作为输入我使用“teu”(没有“”)应该被接受...

知道为什么会出现此错误消息? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您必须在此处关闭大括号,然后移除 || 运算符。

它也是die()而不是died()

died('Lamentamos, mas constam erros no seu registo.'); 

全部放在一起

if(!isset($_POST['element_1_1']) ||
    !isset($_POST['element_1_2']) ||
    !isset($_POST['element_2'])){
    die('Lamentamos, mas constam erros no seu registo.');
}

答案 1 :(得分:0)

该消息表示正则表达式中的字符12处出现错误。由于这是撇号(单引号),我的猜测是你需要逃避它。