2017-06-18 52 views
0

我最近将一个输入表单从一个文本切换到了一个textarea,这样我就可以有多行文本。 除非我去验证,否则表单工作正常。如果它是一条线,是没有问题的,但是当我进入换到第二行文字,我从我的表单验证得到一个错误(仅字母和数字被允许)这里是我的代码:在一个文本区域上验证php表格

private function validate_alnum($var, $min=0, $max=0, $required=false, $err="") { 
    if($required==false && strlen($this->source[$var]) == 0) { 
      return true; 
} 
if(isset($this->source[$var])){ 
    if(strlen($this->source[$var]) < $min) { 
    $this->errors[$var] = $err . ' is too short. It has to be at least '.$min. ' character(s)'; 
    } elseif(strlen($this->source[$var]) > $max) { 
     $this->errors[$var] = $err . " is too long. It can't be more than ".$max. " characters"; 
    } elseif(!preg_match("/^[a-zA-Z0-9 -.:,]*$/", $this->source[$var])) { 
$this->errors[$var] = $err . ' is invalid. Only letters and numbers are allowed'; 
} 
} 
} 
+0

你的函数需要太多的参数,这意味着它做的很多。请考虑为其他功能分配功能。 –

回答

1

你的正则表达式不允许换行。尝试:

^[-a-zA-Z0-9\s.:,]*$ 

-应该是第一个或最后一个字符,如果你希望它是文本的,否则它使范围。

\s这里将允许单个空格,新行和制表符。 (Additional reading\s

如果更改量词来+可以肯定不止1个字符的字符串,这将拿出你的默认$min要求(错误信息会少些特定虽然)。

+0

只是一个注释,这里是相同的模式浓缩:'/^[ - a-z \ d \ s。:,] * $/i' – mickmackusa

+0

非常感谢您的及时回复和信息。有趣的mickmackusa – cbspaulding

+0

继续,mickmackusa的正则表达式/^[-az\d\s.:,]*$/i解决了这个问题,但我仍然得到了与^ [ - a-zA-Z0-9 \ s相同的验证错误。 :,] * $不知道为什么? – cbspaulding