예제 #1
0
파일: Valid.php 프로젝트: gnribeiro/turim
 /**
  * Check an email address for correct format.
  *
  * @link  http://www.iamcal.com/publish/articles/php/parsing_email/
  * @link  http://www.w3.org/Protocols/rfc822/
  *
  * @param   string  $email  email address
  * @param   boolean $strict strict RFC compatibility
  * @return  boolean
  */
 public static function email($email, $strict = FALSE)
 {
     if (UTF8::wpstrlen($email) > 254) {
         return FALSE;
     }
     if ($strict === TRUE) {
         $qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
         $dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
         $atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
         $pair = '\\x5c[\\x00-\\x7f]';
         $domain_literal = "\\x5b({$dtext}|{$pair})*\\x5d";
         $quoted_string = "\\x22({$qtext}|{$pair})*\\x22";
         $sub_domain = "({$atom}|{$domain_literal})";
         $word = "({$atom}|{$quoted_string})";
         $domain = "{$sub_domain}(\\x2e{$sub_domain})*";
         $local_part = "{$word}(\\x2e{$word})*";
         $expression = "/^{$local_part}\\x40{$domain}\$/D";
     } else {
         $expression = '/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\\.[a-z]{2,6}|\\d{1,3}(?:\\.\\d{1,3}){3})$/iD';
     }
     return (bool) preg_match($expression, (string) $email);
 }
예제 #2
0
파일: UTF8.php 프로젝트: gnribeiro/turim
 /**
  * Pads a UTF-8 string to a certain length with another string. This is a
  * UTF8-aware version of [str_pad](http://php.net/str_pad).
  *
  *     $str = UTF8::wpstr_pad($str, $length);
  *
  * @author  Harry Fuecks <*****@*****.**>
  * @param   string  $str                input string
  * @param   integer $final_str_length   desired string length after padding
  * @param   string  $pad_str            string to use as padding
  * @param   string  $pad_type           padding type: STR_PAD_RIGHT, STR_PAD_LEFT, or STR_PAD_BOTH
  * @return  string
  */
 public static function str_pad($str, $final_str_length, $pad_str = ' ', $pad_type = STR_PAD_RIGHT)
 {
     if (UTF8::is_ascii($str) and UTF8::is_ascii($pad_str)) {
         return str_pad($str, $final_str_length, $pad_str, $pad_type);
     }
     $str_length = UTF8::wpstrlen($str);
     if ($final_str_length <= 0 or $final_str_length <= $str_length) {
         return $str;
     }
     $pad_str_length = UTF8::wpstrlen($pad_str);
     $pad_length = $final_str_length - $str_length;
     if ($pad_type == STR_PAD_RIGHT) {
         $repeat = ceil($pad_length / $pad_str_length);
         return UTF8::wpsubstr($str . str_repeat($pad_str, $repeat), 0, $final_str_length);
     }
     if ($pad_type == STR_PAD_LEFT) {
         $repeat = ceil($pad_length / $pad_str_length);
         return UTF8::wpsubstr(str_repeat($pad_str, $repeat), 0, floor($pad_length)) . $str;
     }
     if ($pad_type == STR_PAD_BOTH) {
         $pad_length /= 2;
         $pad_length_left = floor($pad_length);
         $pad_length_right = ceil($pad_length);
         $repeat_left = ceil($pad_length_left / $pad_str_length);
         $repeat_right = ceil($pad_length_right / $pad_str_length);
         $pad_left = UTF8::wpsubstr(str_repeat($pad_str, $repeat_left), 0, $pad_length_left);
         $pad_right = UTF8::wpsubstr(str_repeat($pad_str, $repeat_right), 0, $pad_length_right);
         return $pad_left . $str . $pad_right;
     }
 }