>1)==0x7E) { $octets=6; $andfirst=0x1; } elseif (($octet[0]>>2)==0x3E) { $octets=5; $andfirst=0x3; } elseif (($octet[0]>>3)==0x1E) { $octets=4; $andfirst=0x7; } elseif (($octet[0]>>4)==0xE) { $octets=3; $andfirst=0xF; } elseif (($octet[0]>>5)==0x6) { $octets=2; $andfirst=0x1F; } $octet[0]=$octet[0] & $andfirst; $octet[0]=$octet[0] << ($octets-1)*6; $letter+=$octet[0]; for ($j=1;$j<$octets;$j++) { $i++; $octet[$j]=ord($str[$i]) & $and; $octet[$j]=$octet[$j] << ($octets-1-$j)*6; $letter+=$octet[$j]; } if ($letter<0x80) { $outstr.=chr($letter); } else { if (in_array($letter,$recode[$to])) { $outstr.=chr(array_search($letter,$recode[$to])+128); } } } return($outstr); } function is_utf8(&$data) { if (is_array($data)) { foreach ($data as $k=>$v) { if (!is_utf8($v)) return false; } return true; } elseif (is_string($data)) { /* Рег. выражения имеют внутренние ограничения на длину повторов шаблонов поиска *, +, {x,y} равное 65536, поэтому используем preg_replace() вместо preg_match() Выяснилось, что на больших объёмах данных рег. выражение "падает" по незвестным причинам на хостинге РБК-Хостинг Для увеличения производительности используем "однократные" паттерны! */ return strlen(preg_replace('/(?>[\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 )* /sx', '', $data)) === 0; #if (! function_exists('utf8_check')) include_once 'utf8_check.php'; #return utf8_check($data); } elseif (is_scalar($data) || is_null($data)) #~ null, integer, float, boolean { return false; } #~ object or resource trigger_error('Scalar, null or array type expected, ' . gettype($data) . ' given ', E_USER_WARNING); return false; } ?>
Fatal error: Uncaught Error: Call to undefined function is_utf8() in /var/www/vhosts/medianet.kz/trender.kz/Widget.class.php:49 Stack trace: #0 /var/www/vhosts/medianet.kz/trender.kz/Widget.class.php(46): Widget->utf_convert_recursive() #1 /var/www/vhosts/medianet.kz/trender.kz/Widget.class.php(73): Widget->utf_convert_recursive() #2 /var/www/vhosts/medianet.kz/trender.kz/Index.class.php(11): Widget->Widget() #3 /var/www/vhosts/medianet.kz/trender.kz/index.php(7): Index->Index() #4 {main} thrown in /var/www/vhosts/medianet.kz/trender.kz/Widget.class.php on line 49