/**
  * Defined by Zend\Filter\Filter
  *
  * @param  string $value
  * @return string
  */
 public function filter($value)
 {
     if (self::hasPcreUnicodeSupport()) {
         parent::setPattern(array('#(?<=(?:\\p{Lu}))(\\p{Lu}\\p{Ll})#', '#(?<=(?:\\p{Ll}|\\p{Nd}))(\\p{Lu})#'));
         parent::setReplacement(array($this->separator . '\\1', $this->separator . '\\1'));
     } else {
         parent::setPattern(array('#(?<=(?:[A-Z]))([A-Z]+)([A-Z][A-z])#', '#(?<=(?:[a-z0-9]))([A-Z])#'));
         parent::setReplacement(array('\\1' . $this->separator . '\\2', $this->separator . '\\1'));
     }
     return parent::filter($value);
 }
 /**
  * Defined by Zend\Filter\Filter
  *
  * @param  string $value
  * @return string
  */
 public function filter($value)
 {
     // a unicode safe way of converting characters to \x00\x00 notation
     $pregQuotedSeparator = preg_quote($this->separator, '#');
     if (self::hasPcreUnicodeSupport()) {
         parent::setPattern(array('#(' . $pregQuotedSeparator . ')(\\p{L}{1})#eu', '#(^\\p{Ll}{1})#eu'));
         if (!extension_loaded('mbstring')) {
             parent::setReplacement(array("strtoupper('\\2')", "strtoupper('\\1')"));
         } else {
             parent::setReplacement(array("mb_strtoupper('\\2', 'UTF-8')", "mb_strtoupper('\\1', 'UTF-8')"));
         }
     } else {
         parent::setPattern(array('#(' . $pregQuotedSeparator . ')([A-Za-z]{1})#e', '#(^[A-Za-z]{1})#e'));
         parent::setReplacement(array("strtoupper('\\2')", "strtoupper('\\1')"));
     }
     return parent::filter($value);
 }