我试图上传文件,我需要它只包含字母,数字和_
这是我的代码
$regex = new Zend_Validate_Regex('/^[a-zA-Z0-9_.]+$/i');
$regex->setMessages(array(
Zend_Validate_Regex::NOT_MATCH => 'NOT MATCH - File name can only contain letters, numbers and underscores',
Zend_Validate_Regex::INVALID => 'INVALID - File name can only contain letters, numbers and underscores',
Zend_Validate_Regex::ERROROUS => 'ERROR - File name can only contain letters, numbers and underscores'
));
$file = new Zend_Form_Element_File('file');
$file->setRequired(TRUE)
->setDestination($path)
->addValidator('Size', FALSE, array('min' => '10kB', 'max' => '100MB'))
->addValidator('Extension', FALSE, 'avi,mov,wmv,mpeg,flv,mpg,mp4')
->addValidator($regex)
->getValidator('Upload')->setMessage('No file selected');
$file->removeDecorator('DtDdWrapper');
$file->removeDecorator('HtmlTag');
$file->getDecorator('Label')->setTag(NULL);
我希望此文件通过:test_test.jpeg
但不是这一个:test test.jpeg
我遇到的问题是,即使文件名正常,验证程序仍会抛出NOT_MATCH
错误
我甚至允许.
以防文件名是整个文件名字符串
任何想法?
答案 0 :(得分:1)
/^(.*/)?[a-zA-Z0-9_.]*?\.[a-zA-Z0-9_]*?$/i
摆脱“\”之后的一切。如果您不需要延期。否则,这应该适用于完整路径和纯文件名称