PHP класс для работы с API Яндекс Предиктор
01-Июл-22 21:16
Простенький php класс для работы с API Яндекс Предиктор.
Если вы в своих проектах используете язык программирования PHP, тогда этот класс именно для Вас. С его помощью Ваш сервис сможет выводить текстовые подсказки в поисковой строке или другом текстовом поле. Это значительно упрощает ввод, особенно на мобильных устройствах. Кроме того, Предиктор может учитывать допущенные опечатки и ошибки.
Первое, что нужно сделать - это получить token по этой ссылке.
class YandexPredictor { var $cfg = [ 'key' ='Ваш токен', // API-ключ. Получите бесплатный API-ключ на https://yandex.ru/dev/predictor/keys/get/?service=pdct странице); 'q' => 'http://web-tool.info', // Текст 'lang' => 'ru', // Язык текста 'limit' => 3 // Количество возвращаемых подсказок ]; public function __construct($cfg) { $this->cfg = array_merge($this->cfg, $cfg); } public function Request () { return $this->Curl(); } private function Curl() { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://predictor.yandex.net/api/v1/predict.json/complete?'.http_build_query($this->cfg)); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.103 YaBrowser/18.7.1.437 (beta) Yowser/2.5 Safari/537.36'); $this->request = curl_exec($ch); curl_close($ch); return $this->JsonDecode(); } private function JsonDecode () { $this->result = json_decode($this->request, true); if (isset($this->result['code'])) { $this->ServiceMessage(); } return $this->result; } private function ServiceMessage() { if ($this->result['code'] != 200) { die($this->result['message']); } } } $YandexPredictor = new YandexPredictor([ 'key' => 'pdct.1.1.20220701T181548Z.86cf791c6adc290a.162e9040d2fce163d7931ed189c81235d3a034b1', 'lang' => 'en', 'limit' => 1 ]); var_dump($YandexPredictor->Request());
Вывод:
$YandexPredictor = new YandexPredictor([ 'key' => 'Ваш токен', 'lang' => 'en', 'limit' => 1
-
На выходе получаем массив данных. Как с ним поступить, решать Вам:
- endOfWord - признак конца слова (true/false).
Метод может одновременно вернуть "продолжение" запроса и признак endOfWord= true (например, для текста "здравствуй" возвращается продолжение "здравствуйте", а также признак конца слова). - pos - позиция в слове, для которого возвращается продолжение. Позиция отсчитывается от последнего символа в запросе, переданном в элементе q.
Обычно, pos принимает отрицательные значения. Например, для текста q="кот в сапо" будет возвращено pos=-4. Если запрос содержит завершенную фразу, то может быть возвращена подсказка для следующего слова. При этом pos будет принимать значение 0 (например, при q="кот в ") или 1 (например, q="кот в"). - text - Содержит элементы string с наиболее вероятными вариантами продолжения заданного текста. Если метод не может "продолжить" текст, то элемент не возвращается.