PHPackages                             pandcar/atomic - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. pandcar/atomic

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

pandcar/atomic
==============

Library for parsing

1.5.0(8y ago)257proprietaryPHPPHP &gt;=5.4.0

Since Dec 27Pushed 8y ago1 watchersCompare

[ Source](https://github.com/PandCar/Atomic)[ Packagist](https://packagist.org/packages/pandcar/atomic)[ RSS](/packages/pandcar-atomic/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (9)DependenciesVersions (10)Used By (0)

[![logo](/examples/assets/logo2.png)](/examples/assets/logo2.png) Atomic [![Latest Stable Version](https://camo.githubusercontent.com/9a335f8cd2fdbc5c852b39133f07fba56c393b4ac24a5ebf4c392f33f223726e/68747470733a2f2f706f7365722e707567782e6f72672f50616e644361722f41746f6d69632f762f737461626c652e737667)](https://packagist.org/packages/pandcar/atomic) [![Total Downloads](https://camo.githubusercontent.com/da5de8b4eb5cf72e14c2981fe73ce1d4c605d523bafe879bf120886646072676/68747470733a2f2f706f7365722e707567782e6f72672f50616e644361722f41746f6d69632f646f776e6c6f616473)](https://packagist.org/packages/pandcar/atomic) [![compatible](https://camo.githubusercontent.com/a0f6b8cd184f911a6fb0c889eeb497a0f329089c2349f885f253b71b486cb9a3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d2533453d352e342d677265656e2e737667)](https://camo.githubusercontent.com/a0f6b8cd184f911a6fb0c889eeb497a0f329089c2349f885f253b71b486cb9a3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d2533453d352e342d677265656e2e737667)
========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

[](#-atomic---)

Установка
---------

[](#установка)

Для установки Atomic выполните команду:

```
composer require pandcar/atomic
```

Быстрый старт
-------------

[](#быстрый-старт)

```
require __DIR__.'/vendor/autoload.php';

$atom = new Atomic([
	'path_tmp' => __DIR__ .'/tmp'
]);

$result = $atom->request('http://site.ru/');
```

Все примеры можно найти [здесь](https://github.com/PandCar/Atomic/tree/master/examples).

Настройки
---------

[](#настройки)

```
// В конструкторе
$atom = new Atomic([
	'path_tmp' => __DIR__ .'/tmp'
]);

// Одиночная настройка
$atom->set('path_tmp', __DIR__ .'/tmp');

// Множественная
$atom->set([
	// Папка для временных файлов (cookie, phantomjs-tmp)
	'path_tmp' => __DIR__ .'/tmp',
	// Имя куки
	'name_cookie' => 'atomic',
	// Кука по умолчанию
	'path_cookie' => __DIR__ .'/tmp/atomic.cookie',
	// Ограничение времени на подключение (сек.)
	'connect_timeout' => 20,
	// Ограничение времени на выполнение запроса (сек.)
	'timeout' => 60,
	// Прокси сервер по умолчанию
	'proxy' => 'http://login:password@host:port',
	// Лямбда до выполнения $this->request(); влияющая на запрос
	'callback_request_start' => function($query){},
	// Лямбда после каждого выполнения $this->request();
	'callback_request_end' => function($query, $response){},
	// Путь до PhantomJS
	'phantomjs_path' => __DIR__ .'/bin/phantomjs.exe',
	// Ключь сервиса ruCaptcha
	'rucaptcha_key' => '6df61bfae47c6a9214729143c4fc9a82',
	// HTTP заголовки/планы по умолчанию
	'headers' => [
		'default' => [
			'Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
			'Upgrade-Insecure-Requests: 1',
			'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36',
		],
		'ajax' => [
			'Accept: */*',
			'Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
			'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36',
			'X-Requested-With: XMLHttpRequest',
		],
	],
]);
```

Описание опций $this-&gt;request();
-----------------------------------

[](#описание-опций-this-request)

```
// Простой get запрос
$result = $atom->request('http://site.ru/');

// Мульти запрос
$array = $atom->request_multi([
	[
		'url' => 'http://site.ru/?foo=bar'
	],
	[
		'url' => 'http://sitetwo.ru/'
	],
]);

// Все опции
$result = $atom->request([
	// url запроса
	'url' => 'http://site.ru/',
	// Конструктор query
	'get' => [
		'foo' => 'bar',
	],
	// Ограничение времени на подключение (сек.)
	'connect_timeout' => 5,
	// Ограничение времени на выполнение запроса (сек.)
	'timeout' => 20,
	// Простой Post (приоритет)
	'post' => 'foo=bar&ddd=ccc',
	// Конструктор Post
	'post/build' => [
		'username' => $login,
		'password' => $password,
		'submit' => 'Войти',
	],
	// Загрузка контента в файл
	'file_handle' => $fopen,
	// План заголовков
	'headers_plan' => 'ajax',
	// Заголовки (приоритет)
	'headers' => [
		'Referer: http://site.ru/',
	],
	// Сливает заголовки с заголовками по умолчанию
	'headers/merge' => [
		'Referer: http://site.ru/',
	],
	// Прокси
	'proxy' => 'http://login:password@host:port',
	// Куки (приоритет)
	'cookie' => 'foo=bar&ddd=ccc',
	// Конструктор cookie
	'cookie/build' => [
		'foo' => 'bar',
	],
	// Путь к файл cookie
	'cookie_path' => __DIR__ .'/tmp/atomic.cookie',
	// Лямбда функции cURL (header, progress, read, write)
	'callbacks' => [
		'write' => function($curl, $content){
			return strlen($content);
		}
	],
	// Прямая установка параметров cURL (приоритет)
	'curl_setopt' => [
		CURLOPT_HEADER => true,
	],
	// Исключения Заголовков ответа из результата cURL
	'no_headers' => true,
	// Исключения Тела ответа из результата cURL
	'no_body' => true,
	// Сменить кодировку контента из windows-1251 на utf8
	'charset' => 'windows-1251',
	// Следовать по заголовкам Location
	'follow_location' => true,
	// Форма данных (headers, body, array, json, xml)
	'form' => 'json',
	// Включает отладку
	'debug' => true,
	// Не вызывать callback_request_*
	'no_callback' => true,
]);
```

Работа с cookie файлом по умолчанию
-----------------------------------

[](#работа-с-cookie-файлом-по-умолчанию)

```
// Получить массив кук
$array = $atom->getCookie();

// Установка куки
$atom->setCookie($domen, $key, $value, $time);

// Удаление одной или всех кук (если без параметров)
$atom->removeCookie($key, $domen);
```

Инструменты
-----------

[](#инструменты)

#### Обёртка над preg\_match()

[](#обёртка-над-preg_match)

```
$string = $atom->regexp('>([^([^([^([^([^([^
