定制 lubosdz/parser-orsr 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

lubosdz/parser-orsr

Composer 安装命令:

composer require lubosdz/parser-orsr

包简介

Parser Obchodneho registra SR - https://www.orsr.sk/ (Parser for Business Directory of Slovak Republic)

README 文档

README

Disclaimer / Prehlásenie:

Kód poskytnutý je bez záruky a môže kedykoľvek prestať fungovať. Jeho funkčnosť je striktne naviazaná na generovanú štruktúru HTML elementov. Autor nie je povinný udržiavať kód aktuálny a funkčný, ani neposkytuje ku nemu žiadnu podporu. Kód bol sprístupnený na základe mnohých žiadostí vývojárov finančno-ekonomických aplikácií a (bohužiaľ) neschopnosti úradných inštitúcií sprístupniť oficiálny prístup do verejnej databázy subjektov pomocou štandardného API rozhrania. Autor nezodpovedá za nesprávne použitie kódu.

Licencia

Kód obsiahnutý v súbore ConnectorOrsr.php je voľne distribuovateľný a modifikovateľný na súkromné ako aj komerčné účely.

Poznámka / Note

Obchodný register SR obsahuje len časť subjektov v podnikateľskom prostredí (cca 480 tis.). Neobsahuje údaje napr. o živnostníkoch alebo neziskových organizáciách. Tieto sa nachádzajú v ďalších verejne prístupných databázach (živnostenský register, register účtovných závierok, register právnických osôb). Pokiaľ hľadáte profesionálne riešenie s prístupom ku všetkých 1.7 mil. subjektom pozrite https://bizdata.sk.

Parser for Business Directory of Slovak Republic allows accessing cca 480k companies. However, it does not provide access to ie. enterpreneurs or unprofitable organizations, since these are not contained within the Business Directory. If you are looking for a professional solution with access to all 1.7 mil. of entities, take a look at https://bizdata.sk.

Tipy na správne použitie

  • nepreťažujte server obchodného registra ORSR - nie je známe, akú záťaž dokáže server zvládnuť. Preťažením servera znemožníte využitie služby sebe aj iným. Buďte etickí programátori.
  • neoporúčame posielať požiadavky na server častejšie ako 1x za minútu. V žiadnom prípade nerobte hromadné odoslanie požiadaviek napr. 10 požiadaviek za sekundu - nerobia to ani webboty, lebo vedia, že môžu odpáliť server a dostať IP ban.
  • cachujte odpovede (do databázy) zo servera ORSR tak, aby sa rovnaký request neopakoval aspoň 3 - 6 mesiacov. Údaje v Obchodnom registri sa menia veľmi zriedkavo. Cachovanie nie je súčasťou implementácie (ukladanie odpovedí do lokálneho súboru v debug móde nepovažujeme za cachovanie).

Inštalácia, dependencie, demo

$ composer require "lubosdz/parser-orsr" : "~1.1.0"

Použitie / API / Usage

// inicializacia API objektu
$orsr = new \lubosdz\parserOrsr\ConnectorOrsr();

Vyhľadávanie:

// vyhľadanie zoznamu subjektov podľa mena/názvu:
$list = $orsr->findByPriezviskoMeno('Novák', 'Peter');
$list = $orsr->findByObchodneMeno('Matador'); // e.g. vypis.asp?ID=1319&SID=9&P=0
$list = $orsr->findByICO('31577890'); // always max. 1 item - array(subject_name => link)

// vyhľadanie detailu subjektu podľa ID/IČO:
$detail = $orsr->getDetailById(1319, 9); // from link "vypis.asp?ID=1319&SID=9"
$detail = $orsr->getDetailByICO('31577890');

Podporné metódy:

// zapneme priamy výstup údajov do prehliadača + local file caching into temp directory
$orsr->debug = true;
$orsr->dirCache = '/writable/temp/'; // debugging will attempt to save fetched page

// nastavenie formátu výstupu
$orsr->setOutputFormat('xml'); // xml|json|empty string

// (!) NOT RECOMMENDED - bez tidy extension + vypnute zobrazenim XML chyb
$orsr->useTidy = false;
$orsr->showXmlErrors = false;

Príklad odpovede:

// sample #1
$list = $orsr->findByObchodneMeno('Matador');

$list : array (
  'MATADOR Automotive Vráble, a.s.' => 'vypis.asp?ID=1319&SID=9&P=0',
  'MATADOR Automation, s. r. o.' => 'vypis.asp?ID=361195&SID=6&P=0',
  'MATADOR HOLDING, a.s.' => 'vypis.asp?ID=6014&SID=6&P=0',
  'MATADOR Industries, a. s.' => 'vypis.asp?ID=5962&SID=6&P=0',
  'MATADOR Tools, s. r. o.' => 'vypis.asp?ID=361231&SID=6&P=0',
  'MATADORFIX s.r.o.' => 'vypis.asp?ID=8202&SID=2&P=0',
  'MATADOR-TOYS, s. r. o.' => 'vypis.asp?ID=313211&SID=6&P=0',
)

// sample #2
$detail = $orsr->getDetailById(1319, 9); // z linky 'vypis.asp?ID=1319&SID=9&P=0'

$detail : Array
(
	[meta] => Array
		(
			[api_version] => 1.0.5
			[sign] => 6A36A4547DBAD50692BEB0C428AB4FC8
			[server] => localhost
			[time] => 09.11.2019 09:22:58
			[sec] => 2.421
			[mb] => 0.680
		)
	[prislusny_sud] => Bratislava I
	[oddiel] => Po
	[vlozka] => 1648/B
	[typ_osoby] => pravnicka
	[hlavicka] => Spoločnosť zapísaná v obchodnom registri Okresného súdu Bratislava I, oddiel Po, vložka 1648/B.
	[hlavicka_kratka] => OS Bratislava I, oddiel Po, vložka 1648/B
	[obchodne_meno] => Novak company s. r. o., organizačná zložka
	[likvidacia] => nie
	[adresa] => Array
		(
			[street] => Heydukova
			[number] => 9
			[city] => Bratislava
			[zip] => 81108
		)

	[ico] => 44443536
	[den_zapisu] => 16.10.2008
	[pravna_forma] => Podnik zahraničnej osoby (organizačná zložka podniku zahraničnej osoby)
	[predmet_cinnosti] => Array
		(
			[0] => kúpa tovaru na účely jeho predaja konečnému spotrebiteľovi /maloobchod/ alebo iným prevádzkovateľom živnosti /veľkoobchod/
			[1] => sprostredkovateľská činnosť v oblasti obchodu
			[2] => sprostredkovateľská činnosť v oblasti služieb
		)

	[veduci_organizacnej_zlozky] => Array
		(
			[name] => Jan Novák
			[street] => Semická
			[city] => Modřany Praha
			[country] => Česká republika
			[since] => 16.10.2008
			[number] => 3292/6
			[zip] => 414300
		)

	[konanie_menom_spolocnosti] => Vedúci organizačnej zložky je oprávnený robiť právne úkony v záležitostiach týkajúcich sa organizačnej zložky. Vedúci organizačnej zložky koná a podpisuje tak, že k napísanému alebo vytlačenému označeniu organizačnej zložky pripojí svoj podpis s uvedením svojej funkcie. Zakladateľ môže stanoviť interné pokyny, ktorými obmedzí konanie vedúceho organizačnej zložky.
	[dalsie_skutocnosti] => Spoločnosť bola založená zakladateľskou listinou o založení organizačnej zložky vo forme notárskej zápisnice N 229/2008, Nz 41147/2008 zo dňa 1.10.2008 v zmysle príslušných ustanovení z. č. 513/1991 Zb. Obchodný zákonník.
	[datum_aktualizacie] => 07.11.2019
	[datum_vypisu] => 31.12.2023
)

Príklad implementácie (MVC framework, e.g. Yii)

OrsrController:

<?php
use lubosdz\parserOrsr\ConnectorOrsr;

public function actionFindDetailByIco()
{
	$ico = empty($_GET['ico']) ? '' : htmlspecialchars(trim($_GET['ico']));
	$out = [];

	$connector = new ConnectorOrsr();
	$results = $connector->getDetailByICO($ico);

	return $this->asJson($out);
}

public function actionFindListByCompanyName()
{
	$term = empty($_GET['term']) ? '' : htmlspecialchars(trim($_GET['term']));
	$out = [];

	$connector = new ConnectorOrsr();
	$results = $connector->findByObchodneMeno($term);

	if($results && is_array($results)){
		foreach($results as $name => $link){
			$out[] = [
				'label' => $name,
				'value' => $link,
			];
		}
	}

	return $this->asJson($out);
}

public function actionCompanyDetail()
{
	$link = empty($_GET['h']) ? '' : htmlspecialchars($_GET['h']);
	$out = [];

	if($link){
		$connector = new ConnectorOrsr();
		$out = $connector->getDetailByPartialLink($link);
	}

	return $this->asJson($out);
}

View:

<input type="text" id="company_ico" maxlength="8" />

<script type="text/javascript">

$("#company_ico").on("keyup", function(){
	var me = $(this), ico = $.trim(me.val()),
	if(8 === ico.length){
		if(!/^([\d])+$/.test(ico)){
			alert("Zadajte len číslice 0-9.");
		}else{
			$.ajax({
				url: "/orsr/find-detail-by-ico", // implement your own OrsrController
				data: {ico: ico},
				success: function (response) {
					if(response.ico != undefined && response.ico){
						console.log(response);
					}else{
						alert("No records found.");
					}
				}
			})
		}
	}
});

</script>

Changelog

1.1.5 - 06.05.2026

  • UPD - parse either section "Predmet činnosti" or "Predmet podnikania" (latter one introduced recently)
  • UPD - improved detection of company in bankruptcy (v likvidácii)

1.1.4 - 18.08.2025

  • ENH - properly detect valid item - may not contain "Deň výmazu:" (@romanmatyus)
  • use preg_match() rather than stripos() for searching single-byte HTML source string

1.1.3 - 27.05.2025

  • ENH - properly detect valid item - not containing "Výpis je neaktuálny z dôvodu zmeny právnej formy"
  • ENH - added test + CI workflow for PHP 7.1 - 8.4 (@romanmatyus)

1.1.2 - 21.10.2024

  • ENH - store fetched source link (permalink) as attribute "srcUrl" along with extracted data
  • ENH - documentation improvements - see demo

1.1.1 - 16.10.2024

  • ENH - extract Kontrolná komisia
  • ENH - multiple minor parsing improvements - hodnota akcií, štatutári, neštandardné poznámky osobách apod.

1.1.0 - 13.11.2023

  • Fix - vrátime platný spis pre viac platných záznamov / subjektov s rovnakým IČO (getDetailByICO - #10)
  • Enh - support requests delay options (msecDelayFetchUrl, delayAfterRequestCount) to prevent from rate limit ban

1.0.9 - 02.06.2023

  • Support "Mestský súd" along with traditional "Okresný súd"
  • Fix multiline company name with EOLs
  • tests passing 8.2.3

1.0.8 - 15.02.2022

  • Fix compatability with PHP 8.1+

1.0.7 - 06.01.2022

  • Added unit tests passing PHP 5.6 - 8.1
  • Updated endpoint URL to HTTP -> HTTPS
  • Separate method for loading remote URL with configurable timeout (default 5 secs)
  • Many parsing improvements
  • Fix invalid UTF-8 chars for some foreign companies, strip off accents from HU, PL, CZ company names
  • Parsing item dates - e.g. item since or eventDate
  • Normalized currency conversion to EUR (e.g. vyska vkladu) if denominated in SKK
  • minor BC break: attribute likvidacia now returns 1|0 instead of ano|nie
  • Added new parsed sections:
    • Spoločnosť zrušená od
    • Právny dôvod zrušenia
    • Vyhlásenie konkurzu
    • Správca konkurznej podstaty
    • členský vklad
    • Zlúčenie, splynutie
    • Právny nástupca

1.0.6 - 25.08.2020

  • Make tidy extension optional (NOT recommended, but for some hostings the only way to go)
  • Minor improvements e.g. multiple whitespaces replaced with a single whitespace

1.0.5 - 09.11.2019

  • Revert support for option uplny/ciastocny vypis
  • Extract Miesto podnikania, Veduci org. zlozky
  • Fixed parsing countries for foreigners
  • Updated documentation

1.0.4 - 08.11.2019

  • Added option uplny/ciastocny vypis
  • Extract additional attributes (den vymazu, dovod vymazu, zastupovanie)
  • fix multiple company names & address without street (only city)

1.0.3 - 02.09.2019

  • Added method findByICO, code cleanup & formatting

1.0.2 - 14.05.2019

  • fixed PCRE unicode handling in different environments

1.0.1 - 11.03.2019

  • fixed bug PHP7+ compatability

1.0.0 - 12.09.2018

  • initial release

lubosdz/parser-orsr 适用场景与选型建议

lubosdz/parser-orsr 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 76.49k 次下载、GitHub Stars 达 60, 最近一次更新时间为 2018 年 09 月 12 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「orsr.sk API parser」 「Obchodny register SR」 「slovak business directory」 「orsr.sk」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 lubosdz/parser-orsr 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 lubosdz/parser-orsr 我们能提供哪些服务?
定制开发 / 二次开发

基于 lubosdz/parser-orsr 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 76.49k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 60
  • 点击次数: 34
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 60
  • Watchers: 9
  • Forks: 17
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2018-09-12