示例#1
2
 public static function clean($var, $charset = NULL)
 {
     if (!$charset) {
         // Use the application character set
         $charset = JsonApiApplication::$charset;
     }
     if (is_array($var) or is_object($var)) {
         foreach ($var as $key => $val) {
             // Recursion!
             $var[UTF8::clean($key)] = UTF8::clean($val);
         }
     } elseif (is_string($var) and $var !== "") {
         // Remove control characters
         $var = UTF8::strip_ascii_ctrl($var);
         if (!UTF8::is_ascii($var)) {
             // Temporarily save the mb_substitute_character() value into a variable
             $mb_substitute_character = mb_substitute_character();
             // Disable substituting illegal characters with the default '?' character
             mb_substitute_character("none");
             // convert encoding, this is expensive, used when $var is not ASCII
             $var = mb_convert_encoding($var, $charset, $charset);
             // Reset mb_substitute_character() value back to the original setting
             mb_substitute_character($mb_substitute_character);
         }
     }
     return $var;
 }
示例#2
0
文件: text.php 项目: anqh/core
 /**
  * Recursively cleans arrays, objects, and strings. Removes ASCII control
  * codes and converts to the requested charset while silently discarding
  * incompatible characters.
  *
  * @param   mixed  $str
  * @return  string
  */
 public static function clean($str)
 {
     if (is_array($str) || is_object($str)) {
         foreach ($str as $key => $val) {
             $str[$key] = self::clean($val);
         }
     } else {
         if (is_string($str) && $str !== '') {
             $str = mb_strtolower(UTF8::strip_ascii_ctrl($str));
             if (!UTF8::is_ascii($str)) {
                 $str = strtolower(self::transliterate_to_ascii($str));
             }
             if (!UTF8::is_ascii($str)) {
                 $str = UTF8::strip_non_ascii($str);
             }
         }
     }
     return $str;
 }
示例#3
0
 /**
  * Recursively cleans arrays, objects, and strings. Removes ASCII control
  * codes and converts to the requested charset while silently discarding
  * incompatible characters.
  *
  *     UTF8::clean($_GET); // Clean GET data
  *
  * @param   mixed   $var        variable to clean
  * @param   string  $charset    character set, defaults to Kohana::$charset
  * @return  mixed
  * @uses    UTF8::clean
  * @uses    UTF8::strip_ascii_ctrl
  * @uses    UTF8::is_ascii
  */
 public static function clean($var, $charset = 'utf-8')
 {
     if (is_array($var) or is_object($var)) {
         foreach ($var as $key => $val) {
             // Recursion!
             $var[UTF8::clean($key)] = UTF8::clean($val);
         }
     } elseif (is_string($var) and $var !== '') {
         // Remove control characters
         $var = UTF8::strip_ascii_ctrl($var);
         if (!UTF8::is_ascii($var)) {
             // Disable notices
             $error_reporting = error_reporting(~E_NOTICE);
             $var = mb_convert_encoding($var, $charset, $charset);
             // Turn notices back on
             error_reporting($error_reporting);
         }
     }
     return $var;
 }
示例#4
0
文件: UTF8Test.php 项目: azuya/Wi3
 /**
  * Tests UTF8::strip_ascii_ctrl
  *
  * @test
  * @dataProvider provider_strip_ascii_ctrl
  */
 public function test_strip_ascii_ctrl($input, $expected)
 {
     $this->assertSame($expected, UTF8::strip_ascii_ctrl($input));
 }