PHP класс для работы с API Яндекс Предиктор

01-Июл-22 21:16

PHP класс для работы с API Яндекс Предиктор

Простенький 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 с наиболее вероятными вариантами продолжения заданного текста. Если метод не может "продолжить" текст, то элемент не возвращается.
Информация о хостинге