Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Пример работы с API стандартизации DaData на PHP (через cUrl)
<?php
class Dadata {
private $base_url = "https://dadata.ru/api/v2/clean";
private $token;
private $secret;
private $handle;
public function __construct($token, $secret) {
$this->token = $token;
$this->secret = $secret;
}
public function init() {
$this->handle = curl_init();
curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->handle, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"Accept: application/json",
"Authorization: Token " . $this->token,
"X-Secret: " . $this->secret,
));
curl_setopt($this->handle, CURLOPT_POST, 1);
}
public function clean($type, $value) {
$url = $this->base_url . "/$type";
$fields = array($value);
return $this->executeRequest($url, $fields);
}
public function cleanRecord($structure, $record) {
$url = $this->base_url;
$fields = array(
"structure" => $structure,
"data" => array($record)
);
return $this->executeRequest($url, $fields);
}
public function close() {
curl_close($this->handle);
}
private function executeRequest($url, $fields) {
curl_setopt($this->handle, CURLOPT_URL, $url);
curl_setopt($this->handle, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($this->handle);
$result = json_decode($result, true);
return $result;
}
}
// Метод init() следует вызвать один раз в начале,
// затем можно сколько угодно раз вызывать clean() или cleanRecord()
// и в конце следует один раз вызвать метод close().
//
// За счёт этого не создаются новые сетевые соединения на каждый запрос,
// а переиспользуется существующее.
$token = "ВАШ_API_КЛЮЧ";
$secret = "ВАШ_СЕКРЕТНЫЙ_КЛЮЧ";
$dadata = new Dadata($token, $secret);
$dadata->init();
// Стандартизовать одно значение
$result = $dadata->clean("name", "Сергей Владимерович Иванов");
print_r($result);
// Стандартизовать запись из нескольких полей
// Допускается не более 1 ФИО, 3 адресов, 3 телефонов, 3 email
$structure = array("PHONE", "PHONE", "PHONE");
$record = array("8 916 823 3454", "495 663-12-53", "457 07 25");
$result = $dadata->cleanRecord($structure, $record);
print_r($result);
$dadata->close();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.