2011-03-18 62 views
1

嘿家伙,快速问题,只是试图通过Zend_Filter过滤用户的名和姓,但一些用户显然可能是爱尔兰或其他的东西。有没有人有过滤器和验证扩展为此? Thx为你的时间家伙。Zend_Filter和Zend_Validate带撇号的名字

+0

只要您始终使用UTF-8作为编码,我就不会看到问题。 – Daff 2011-03-18 20:51:23

+3

这是他们的名字 - 为什么要过滤这个呢?在法律上将他的名字改为含有“2”的人不会享受这个剧本会抛出的错误否定。只要确保该值不是空白或全部空白并继续。 – 2011-03-18 20:52:44

+1

我认为OP意味着一般的验证。当然,他必须验证用户输入,并且如果没有适合名称的Zend_Validate验证器(如O'Hara),那么他需要编写一个自定义验证器,也就是我认为他所要求的验证器。通常使用的验证器是'Alnum',我记得我已经看到了添加接受的字符的方法,现在在手册中我找不到任何关于它的内容。 – markus 2011-03-18 21:47:59

回答

2

您将必须实现一个正则表达式验证,喜欢的东西

\w+[']?\w+ 

为正则表达式,这取决于撇号

如果你不使用Zend表格的位置/计数,这是一个方法来做到这一点。

  $data = $this->getRequest()->getPost(); 

      //Filters Apply first before Validators. 
      $filterRules = array(); 


      //Validators are applied after Filtering. 
      $validatorRules = array( 
        'first_name' => array( 
          new Zend_Validate_Regex('/\w+[']?\w+/'), 
         'presence' => 'required', 
         'allowEmpty' => false, 
         'messages' => 'Blah Blah)); 

    $input = new Zend_Filter_Input($filterRules, $validatorRules, $data); 

语法可能会关闭,而正则表达式可能不是规范,但是我相信你能找出一个正则表达式。