/** * Returns true if $string is valid UTF-8 and false otherwise. * * @param mixed $str String to be tested * * @return boolean */ public static function is_utf8($str) { return UTF8::is_utf8($str); }
/** * Возвращает поисковую фразу в кодировке UTF-8 из URL популярных поисковых серверов. * * @param scalar|null $url * @param string|null $host * @return string|bool returns FALSE if error occured */ public static function search_phrase($url, &$host = null) { if (!ReflectionTypeHint::isValid()) { return false; } if (!is_string($url)) { return false; } $host = null; if (!$url) { return false; } $a = @parse_url($url); if (empty($a['host'])) { return false; } $host = $a['host']; if (empty($a['query'])) { return false; } $params = array('yandex.ru' => 'text', 'www.yandex.ru' => 'text', 'yaca.yandex.ru' => 'text', 'search.yaca.yandex.ru' => 'text', 'images.yandex.ru' => 'text', 'go.mail.ru' => 'q', 'nova.rambler.ru' => 'query', 'google.ru' => 'q', 'google.com' => 'q', 'www.google.ru' => 'q', 'www.google.com' => 'q', 'search.yahoo.com' => 'p', 'bing.com' => 'q', 'www.bing.com' => 'q', 'sm.aport.ru' => 'r', 'nigma.ru' => 's', 'www.nigma.ru' => 's', 'www.daemon-search.com' => 'q'); if (!array_key_exists($host, $params)) { return false; } $param = $params[$host]; parse_str($a['query'], $query); $s = @$query[$param]; if (!is_string($s)) { return false; } if (!UTF8::is_utf8($s)) { $s = UTF8::convert_from($s, 'cp1251'); if (!is_string($s) || !UTF8::is_utf8($s)) { return false; } } return $s; }