{"id":184334,"date":"2013-06-23T16:43:02","date_gmt":"2013-06-23T12:43:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=184334"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=184334","title":{"rendered":"<span class=\"post_title\">\u0420\u0435\u0448\u0430\u0435\u043c \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 API \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u0430\u0440\u0442<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0412 \u0436\u0438\u0437\u043d\u0438 \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u00ab\u043c\u0430\u0445\u0440\u043e\u0432\u043e\u0433\u043e\u00bb IT-\u0448\u043d\u0438\u043a\u0430 \u043f\u043e\u0440\u043e\u0439 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u043b\u0435\u0437\u0442\u0438 \u0438\u0437 \u0441\u0432\u043e\u0435\u0439 \u0431\u0435\u0440\u043b\u043e\u0433\u0438 \u043d\u0430 \u0443\u043b\u0438\u0446\u0443, \u043d\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043d\u0430 \u043d\u043e\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0436\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u043e\u043e\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c \u0438 \u043f\u0440\u043e\u0447\u0451\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0430\u0439\u0442\u044b \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043c\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0435, \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043b\u0430\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u043f\u0440\u043e\u0437\u0432\u0430\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u043e\u043d\u0435\u0446 \u0446\u0438\u043a\u043b\u0430, \u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u2014 <code>goto line 1<\/code>\u2026 \u0410 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u044d\u0442\u0430\u043f\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u044d\u0442\u043e \u043d\u0430\u0434\u043e\u0435\u0434\u0430\u0435\u0442 \u0438 \u043e\u043d \u0438\u0434\u0451\u0442 \u0432 \u0430\u0433\u0435\u043d\u0441\u0442\u0432\u043e.<\/p>\n<p>  \u0412\u043e\u0442 \u0438 \u0432 \u043c\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430, \u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0434\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u0437\u0430 \u0442\u0430\u043a\u043e\u0439 \u0440\u0443\u0442\u0438\u043d\u043d\u043e\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b, \u0447\u0442\u043e <s>\u043d\u0435\u0437\u0440\u044f \u043d\u043e\u0448\u0443 \u0431\u043e\u0440\u043e\u0434\u0443<\/s> \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u0430\u043a <a href=\"http:\/\/maps.yandex.ru\">\u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u0430\u0440\u0442\u044b<\/a>, \u0438 \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0447\u0443\u0434\u0435\u0441\u043d\u043e\u0435 <a href=\"http:\/\/api.yandex.ru\/maps\/\">API<\/a>. \u041f\u043e\u0441\u0438\u0434\u0435\u0432 \u043e\u0434\u043d\u043e \u0443\u0442\u0440\u043e \u0438 \u0441\u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0432 \u0432\u0441\u0451 \u0441 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u043c \u0433\u0440\u0430\u0431\u0431\u0435\u0440\u043e\u043c \u043d\u0430 PHP \u0438 XPath \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0442\u0430\u043a\u0443\u044e \u0432\u043e\u0442 \u043a\u0440\u0430\u0441\u043e\u0447\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0443, \u0433\u0434\u0435 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0447\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b (\u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b) \u043f\u043e \u043b\u044e\u0431\u043e\u043c\u0443 \u0438\u0437 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u043d\u0438\u043c \u0432\u0437\u0433\u043b\u044f\u0434\u043e\u043c \u043e\u0446\u0435\u043d\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0431\u043b\u0438\u0436\u0435 \u043a \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u0443 \u0434\u0438\u0441\u043b\u043e\u043a\u0430\u0446\u0438\u0438 (\u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043c\u0435\u0442\u0440\u043e):<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/43c\/e70\/cc4\/43ce70cc42a22ec4b070d66131da6be7.png\" alt=\"\u0421\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430\"\/><\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u043f\u044b\u0442 \u043f\u043e\u0438\u0441\u043a\u0430 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u0438 \u043f\u043e\u0442\u043e\u043c\u0443 \u044f \u043c\u043e\u0433\u0443 \u043d\u0435 \u0437\u043d\u0430\u0442\u044c \u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0435, \u0434\u0435\u043b\u0430\u044e\u0449\u0438\u043c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u2014 \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u043d\u0435\u0439 \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0430 \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u044f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b. \u0410 \u043d\u0430\u0448\u0451\u043b \u0431\u044b \u2014 \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u0432\u043e\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u0441\u043a\u043e\u0440\u0435\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c, \u043f\u043e\u043a\u0430 \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0437 \u0445\u0430\u0431\u0440\u0430\u044e\u0437\u0435\u0440\u043e\u0432 \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u0432\u043e\u0451 \u0432\u0435\u0441\u043a\u043e\u0435 \u00ab\u043d\u044f\u00bb\u2026<\/p>\n<h4>\u0413\u0440\u0430\u0431\u0431\u0435\u0440<\/h4>\n<p>  \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0431\u0443\u0434\u0435\u043c \u0431\u0440\u0430\u0442\u044c \u0441 \u0441\u0430\u0439\u0442\u0430 \u00ab\u0411\u044e\u043b\u043b\u0435\u0442\u0435\u043d\u044f \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438\u00bb: \u0443 \u043d\u0438\u0445 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0441 \u043a\u0443\u0447\u0435\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u043d\u043e \u0431\u0435\u0437 \u043a\u0430\u0440\u0442\u044b, \u0447\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439 \u0432\u0440\u043e\u0434\u0435 \u043c\u0435\u043d\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0443\u043b\u0438\u0446\u0443 \u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u044c.<\/p>\n<p>  \u041d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u0432\u044b\u0434\u0430\u0447\u0438 (\u043d\u0435 \u0431\u043e\u043b\u0435\u0435 300) \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0435\u0447\u0430\u0442\u0438 \u2014 \u044d\u0442\u0438\u043c \u043c\u044b \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f. URL \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u0443\u044e \u0444\u043e\u0440\u043c\u0443:  <\/p>\n<pre><code>http:\/\/www.bn.ru\/zap_fl.phtml?print=printall&\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b_\u043f\u043e\u0438\u0441\u043a\u0430 <\/code><\/pre>\n<p>  \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043f\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443. \u041a\u0430\u043a \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u0438\u0437 \u043d\u0435\u0451 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440? \u041e\u0431\u044b\u0447\u043d\u043e \u044f \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0440\u0435\u0448\u0430\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0430\u043c\u0438, \u043d\u043e \u0443 \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043e\u0441\u043e\u0431\u0430\u044f <s>\u043d\u0435<\/s>\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 HTML, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0449\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c XPath (<a href=\"http:\/\/www.w3schools.com\/xpath\/default.asp\">W3Schools<\/a>). \u0421 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 (<code>&lt;tr&gt;<\/code>), \u0430 \u0438\u0437 \u043d\u0438\u0445 \u2014 \u044f\u0447\u0435\u0439\u043a\u0438 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0446\u0435\u043d\u043e\u0439 \u0438 \u043f\u0440\u043e\u0447\u0438\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e <code>DOMNode<\/code>. <\/p>\n<p>  \u0412\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"php\">\/\/ \u0412\u0441\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f. $all = array(); $baseURL = 'http:\/\/www.bn.ru\/zap_fl.phtml?print=printall&'; \/\/ \u0422\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0430\u0439\u0442 \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430. $empty = iconv('utf-8', 'cp1251', '\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 0');  \/\/ \u0412 \u043c\u043e\u0435\u0439 \u0444\u043e\u0440\u043c\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0430\u0439\u043e\u043d\u043e\u0432. foreach ((array) $_REQUEST['region'] as $region) {   $url = $baseURL.&quot;region$region=$region&&quot;;   \/\/ \u0414\u0440\u0443\u0433\u0438\u0435 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438...    \/\/ \u042d\u0442\u043e\u0442 \u0446\u0438\u043a\u043b \u043d\u0443\u0436\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 300 - \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b    \/\/ \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0441\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u043d\u0430\u0448\u0438\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0435 300.   foreach (range(0, 10000, 1000) as $price0) {     $reqURL = $url.&quot;price1=$price0&price2=&quot;.($price0 + 999);     \/\/ \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 - \u0441\u043c. \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0434\u0430.     $data = dl($reqURL);      if (!strpos($data, $empty)) {       \/\/ \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0435\u0441\u0442\u044c.       $offers = parse($data);       $all = array_merge($all, $offers);     }      \/\/ \u041d\u0435 \u0431\u043e\u043c\u0431\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438.     usleep(200000);   } } <\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <b>dl()<\/b> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u0430 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 cURL \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 <code>file_get_contents()<\/code> \u2014 \u043f\u0440\u0430\u0432\u0434\u0430, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0432\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u043a\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <b>parse()<\/b> \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u043e\u0440\u0430 HTML \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439.  <\/p>\n<pre><code class=\"php\">function parse($html) {   \/\/ \u0421\u043e\u043e\u0431\u0449\u0430\u0435\u043c DOMDocument, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432 UTF-8 (\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431,   \/\/ \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0443 \u043c\u0435\u043d\u044f).    $html = '&lt;?xml encoding=&quot;UTF-8&quot;&gt;'.iconv('cp1251', 'utf-8', $html);    $doc = new DOMDocument('1.0', 'utf-8');   @$doc-&gt;loadHTML($html) or die('loadHTML: '.$html);    \/\/ \u0414\u0435\u043b\u0430\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0441\u0442\u0440\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438.   $xpath = new DOMXPath($doc);   \/\/ \u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u0431\u043b\u0438\u0446, \u043f\u043b\u044e\u0441 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0441\u0442\u0440\u043e\u043a \u0438 \u044f\u0447\u0435\u0435\u043a - \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c   \/\/ \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u044b (\u0443\u0441\u043b\u043e\u0432\u0438\u044f) \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0445, \u0447\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f.   $nodes = $xpath-&gt;query('\/\/table[@class=&quot;results&quot;]\/tr[th[@class=&quot;head_kvart&quot;] or td[@width or @class=&quot;tooltip&quot;]]');    \/\/ \u0413\u043e\u0442\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430\u043c\u0438.   $results = array();   \/\/ \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0435\u0442 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441 \u0447\u0438\u0441\u043b\u043e\u043c \u043a\u043e\u043c\u043d\u0430\u0442 (\u0432\u0435\u0440\u043d\u0435\u0435, \u043e\u043d\u0430 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c) - \u0441\u0447\u0438\u0442\u0430\u0435\u043c   \/\/ \u0438\u0445 \u0441\u0430\u043c\u0438.   $roomCount = 1;    \/\/ $nodes - \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432-\u0441\u0442\u0440\u043e\u043a (tr).   foreach ($nodes as $row) {     \/\/ \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u044f\u0447\u0435\u0435\u043a - \u043f\u043b\u043e\u0449\u0430\u0434\u044c, \u0430\u0434\u0440\u0435\u0441 \u0438 \u0442.\u043f.     $cells = array();     $cell = $row-&gt;firstChild;      while ($cell) {       $cell-&gt;nodeType == XML_ELEMENT_NODE and $cells[] = trim($cell-&gt;nodeValue);       $cell = $cell-&gt;nextSibling;     }      if (count($cells) == 1) {       \/\/ \u0421\u0442\u0440\u043e\u043a\u0430 \u0432\u0441\u0435\u0433\u043e \u0441 \u043e\u0434\u043d\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u043e\u0439 - \u0447\u0438\u0441\u043b\u043e\u043c \u043a\u043e\u043c\u043d\u0430\u0442 \u0434\u043b\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445       \/\/ \u043d\u0438\u0436\u0435. \u0417\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0435\u0433\u043e.       $roomCount = (int) reset($cells);     } else {       $cells[0] = $roomCount;              \/\/ \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u044e\u0442 colspan \u043d\u0430 \u043f\u043e\u043b\u044f\u0445 \u0441 \u0446\u0435\u043d\u043e\u0439 - \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435       \/\/ \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0443\u043b\u0435\u0432\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438.       if (count($cells) == 10) {         array_splice($cells, 6, 1, array(0, '', $cells[6], ''));       }              \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441 \u043a\u0430\u0440\u0442\u044b.       $html = $row-&gt;ownerDocument-&gt;saveXML($row);       if (preg_match('~&lt;a href=&quot;([^&quot;]+)~u', $html, $match)) {         array_unshift($cells, 'http:\/\/www.bn.ru'.$match[1]);       } else {         array_unshift($cells, '');       }        \/\/ \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u044f\u0447\u0435\u0435\u043a \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430.       $keys = array('url', 'rooms', 'address', 'floors', 'houseType', 'area', 'areaLiving', 'areaKitchen', 'toilet', 'price', 'conditions', 'seller', 'phone', 'notes');        $result[] = array_combine($keys, $cells);     }   }    return $result; } <\/code><\/pre>\n<h4>\u041a\u0430\u0440\u0442\u0430<\/h4>\n<p>  \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 <code>$all<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0443\u0434\u043e\u0431\u043d\u043e\u043c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0414\u0435\u043b\u043e \u0437\u0430 \u043c\u0430\u043b\u044b\u043c \u2014 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430:  <\/p>\n<pre><code class=\"php\">array(   'url' =&gt; 'http:\/\/www.bn.ru\/detail\/flats\/xxxxxx.html?from=search',    'rooms' =&gt; 1,    'address' =&gt; '7 \u0421\u043e\u0432\u0435\u0442\u0441\u043a\u0430\u044f \u0443\u043b., xxx',    'floors' =&gt; '1\\\\5',    'houseType' =&gt; '\u0421\u0424',    'area' =&gt; '30',    'areaLiving' =&gt; '18.3',    'areaKitchen' =&gt; '6',    'toilet' =&gt; ' ',    'price' =&gt; '3100',    'conditions' =&gt; ' ',    'seller' =&gt; 'xxxxx \u041d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u044c',    'phone' =&gt; '(965) xxxxxxx',    'notes' =&gt; '\u041f\u041f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430 \u0425\u0421 \u0442\u043e\u0440\u0433', ) <\/code><\/pre>\n<p>  \u0411\u0430\u0437\u043e\u0432\u044b\u0439 HTML \u0434\u043b\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u0430\u0440\u0442\u044b:  <\/p>\n<pre><code class=\"html\">&lt;!DOCTYPE html&gt; &lt;html&gt;   &lt;head&gt;     &lt;meta charset=&quot;utf-8&quot;&gt;     &lt;title&gt;Map grabber&lt;\/title&gt;      &lt;script src=&quot;\/\/api-maps.yandex.ru\/2.0\/?load=package.standard&lang=ru-RU&quot; type=&quot;text\/javascript&quot;&gt;&lt;\/script&gt;     &lt;script src=&quot;\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/1.9.0\/jquery.min.js&quot;&gt;&lt;\/script&gt;      &lt;style&gt;       html, body, .#map { margin: 0; padding: 0; }       #map { width: 100%; height: 800px; }     &lt;\/style&gt;   &lt;\/head&gt;   &lt;body&gt;     &lt;div id=&quot;map&quot;&gt;&lt;\/div&gt;   &lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>  <b>jQuery<\/b> \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u041a\u0430\u0440\u0442 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u043d\u043e \u043e\u043d \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043b\u044f <a href=\"#color\">\u0440\u0430\u0441\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432<\/a>.<\/p>\n<p>  \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440. \u0415\u0433\u043e \u043c\u044b \u0441\u0431\u0440\u043e\u0441\u0438\u043c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043d\u0430 JavaScript \u0438 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u043d\u0451\u043c:  <\/p>\n<pre><code class=\"php\">\/\/ \u041c\u0430\u0441\u0441\u0438\u0432 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432. var coords = [] \/\/ \u041c\u0430\u0441\u0441\u0438\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u044d\u0442\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u0430\u0445. var info = []  &lt;?foreach ($all as $offer) {?&gt;     coords.push('\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433, &lt;?=$offer['address']?&gt;')     info.push(&lt;?=json_encode($offer, JSON_UNESCAPED_UNICODE)?&gt;) &lt;?}?&gt;  ymaps.ready(init); <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 <b>\u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u0430\u0440\u043a\u0435\u0440\u044b<\/b> \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>init()<\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <b>\u0433\u0435\u043e\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/b> \u0438 \u043e\u0431\u044a\u0435\u043a\u0442 <code>MultiGeocoder<\/code> \u0438\u0437 <a href=\"http:\/\/api.yandex.ru\/maps\/jsbox\/multigeocode\">\u043f\u0440\u0438\u043c\u0435\u0440\u0430 API \u041a\u0430\u0440\u0442<\/a>; \u0435\u043c\u0443 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u0440\u0435\u0441\u043e\u0432 (<b>coords<\/b>), \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e \u043d\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (\u0448\u0438\u0440\u043e\u0442\u0430 \u0438 \u0434\u043e\u043b\u0433\u043e\u0442\u0430), \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043c\u0430\u0440\u043a\u0435\u0440\u044b.<\/p>\n<pre><code class=\"javascript\">function init() {   \/\/ \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043a\u0430\u0440\u0442\u0443 \u0441 \u0446\u0435\u043d\u0442\u0440\u043e\u043c \u0432 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435:   var map = new ymaps.Map('map', {     center: [59.932666, 30.329596],     zoom: 13,     behaviors: ['default', 'scrollZoom'],   })    \/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u0438 \u043b\u0438\u043d\u0435\u0439\u043a\u0443:   map.controls     .add('zoomControl', {left: 5, top: 5})     .add('mapTools', {left: 35, top: 5})    \/\/ \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0435\u043e\u043a\u043e\u0434\u0435\u0440\u0430 \u041a\u0430\u0440\u0442.   (new MultiGeocoder({boundedBy: map.getBounds()}))     .geocode(coords)     .then(       function (res) {         \/\/ \u0421\u0435\u0440\u0432\u0435\u0440 \u0432\u0435\u0440\u043d\u0443\u043b \u043d\u0430\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432.         for (var i = 0; i &lt; res.geoObjects.getLength(); i++) {           var cells = info[i]                      \/\/ \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043d\u0430 \u043a\u0430\u0440\u043a\u0435\u0440\u0435 - \u043a\u043e\u0434 \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b            \/\/ \u044f \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e.           var text = '&lt;p&gt;' + $('&lt;b&gt;').append(             $('&lt;a&gt;')               .attr({href: cells.url, target: '_blank'})               .text(cells.address)           )[0].outerHTML + '&lt;\/p&gt;'            \/\/ \u0413\u0435\u043e\u043e\u0431\u044a\u0435\u043a\u0442 - \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043c\u0430\u0440\u043a\u0435\u0440, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.           var geo = res.geoObjects.get(i)           \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0437\u0436\u0435.           info[i].geo = geo           \/\/ \u0417\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432 \u043e\u043a\u043e\u0448\u043a\u0435 \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435.           geo.properties.set('balloonContentBody', text)         }          \/\/ \u0421\u0442\u0430\u0432\u0438\u043c \u0432\u0441\u0435 \u043c\u0430\u0440\u043a\u0435\u0440\u044b \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043a\u0430\u0440\u0442\u0435.         map.geoObjects.add(res.geoObjects)       },       function (err) { alert(err) }     )        return map } <\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0438 \u0432\u0441\u0451. \u0421\u043e\u0431\u0440\u0430\u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435 \u0432 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043c\u044b \u043e\u0434\u043d\u0438\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041d\u0435 \u0437\u043d\u0430\u044e \u043a\u0430\u043a \u0434\u043b\u044f \u0432\u0430\u0441, \u0430 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u043b\u043e \u043f\u043e\u0438\u0441\u043a.<\/p>\n<p>  <a name=\"color\"><\/a>  <\/p>\n<h4>\u0410 \u043a\u0430\u043a \u0436\u0435?..<\/h4>\n<p>  \u0421\u0430\u043c\u044b\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044f \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a \u0440\u0430\u0434\u0443\u0435\u0442 \u0433\u043b\u0430\u0437 \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u0410 \u0437\u0440\u044f! \u042d\u0442\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0442\u0430\u043a \u0436\u0435 \u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u0430\u043a \u0438 \u0441\u0430\u043c\u0430 \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435.<\/p>\n<p>  \u042f \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u0438 \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043a\u0443\u0441\u043a\u043e\u0432 \u043a\u043e\u0434\u0430 \u043d\u0430 JavaScript \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043c\u0430\u0440\u043a\u0435\u0440\u0443. \u0415\u0441\u043b\u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442, \u043c\u0430\u0440\u043a\u0435\u0440 \u043e\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0446\u0432\u0435\u0442 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0441\u0435 \u043e\u0434\u043d\u043e\u043a\u043e\u043c\u043d\u0430\u0442\u043d\u044b\u0435 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b, \u0437\u0430\u0442\u0435\u043c \u2014 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043a\u0443\u0445\u043d\u044e, \u0430 \u0437\u0430\u0442\u0435\u043c \u2014 \u0442\u0435 \u0438\u0437 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u0430\u0436\u0435. <\/p>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443 \u2014 \u043e\u043d \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u0435\u043d. \u041f\u0440\u0438\u0432\u0435\u0434\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 (\u0442\u0438\u043f\u044b \u043c\u0430\u0440\u043a\u0435\u0440\u0430 <a href=\"http:\/\/api.yandex.ru\/maps\/doc\/jsapi\/2.x\/ref\/reference\/option.presetStorage.xml\">\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 API<\/a>):  <\/p>\n<pre><code class=\"javascript\">\/\/ \u0422\u0438\u043f\u044b \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432 \u0438 \u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432\u0438\u0434\u0430 [ [\u0442\u0438\u043f_\u043c\u0430\u0440\u043a\u0435\u0440\u0430, \u043a\u043e\u0434_\u0443\u0441\u043b\u043e\u0432\u0438\u044f], ... ]. var markers = []  \/\/ \u041f\u043e\u043b\u0435 \u0432\u0432\u043e\u0434\u0430 \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 &lt;p data-marker=&quot;twirl#redDotIcon&quot;&gt;. \/\/ twirl#redDotIcon - \u0442\u0438\u043f \u043c\u0430\u0440\u043a\u0435\u0440\u0430 (preset) \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 \u043a\u0430\u0440\u0442\u0443. $('p[data-marker] input').val(function (i, value) {   var marker = $(this).parent().attr('data-marker')   value = $.trim(value)   value && markers.push([marker, value])   return value })  \/\/ \u041f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u043c\u0430\u0440\u043a\u0435\u0440\u044b (\u0441\u043c. init()). cells - {price: 123, rooms: 2, ...}. $.each(info, function (i, cells) {   var colored = false    for (var i = 0; i &lt; markers.length && !colored; i++) {     var item = markers[i]     var func = new Function('cells', 'return ' + item[1]);      \/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f - \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u043a\u0440\u0430\u0441\u0438\u043c \u043c\u0430\u0440\u043a\u0435\u0440.     if (func(cells)) {       cells.geo.options.set('preset', item[0])       \/\/ \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0442\u0438\u043f\u044b \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432.       colored = true     }   }    \/\/ \u041d\u0435 \u043e\u0434\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u043b\u043e - \u043a\u0440\u0430\u0441\u0438\u043c \u043c\u0430\u0440\u043a\u0435\u0440 \u0432 \u0443\u043c\u043e\u043b\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0446\u0432\u0435\u0442.   colored || cells.geo.options.set('preset', 'twirl#blueIcon') }) <\/code><\/pre>\n<p>  \u041f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0432 \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0435\u0449\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0438 \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043d\u043e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0442\u0440\u0430, \u043f\u043e-\u043c\u043e\u0435\u043c\u0443, \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u043f\u043b\u043e\u0445\u043e!<\/p>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u044b\u043b\u0430 \u0432\u0430\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u0430. \u0421 \u0440\u0430\u0434\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0432\u0435\u0447\u0443 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438\u043b\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044e \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u043d\u0430\u0439\u0434\u0443\u0442\u0441\u044f. \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/184334\/\"> http:\/\/habrahabr.ru\/post\/184334\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0412 \u0436\u0438\u0437\u043d\u0438 \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u00ab\u043c\u0430\u0445\u0440\u043e\u0432\u043e\u0433\u043e\u00bb IT-\u0448\u043d\u0438\u043a\u0430 \u043f\u043e\u0440\u043e\u0439 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u043b\u0435\u0437\u0442\u0438 \u0438\u0437 \u0441\u0432\u043e\u0435\u0439 \u0431\u0435\u0440\u043b\u043e\u0433\u0438 \u043d\u0430 \u0443\u043b\u0438\u0446\u0443, \u043d\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043d\u0430 \u043d\u043e\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0436\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u043e\u043e\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c \u0438 \u043f\u0440\u043e\u0447\u0451\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0430\u0439\u0442\u044b \u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043c\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0435, \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043b\u0430\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u043f\u0440\u043e\u0437\u0432\u0430\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u043e\u043d\u0435\u0446 \u0446\u0438\u043a\u043b\u0430, \u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u2014 <code>goto line 1<\/code>\u2026 \u0410 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u044d\u0442\u0430\u043f\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u044d\u0442\u043e \u043d\u0430\u0434\u043e\u0435\u0434\u0430\u0435\u0442 \u0438 \u043e\u043d \u0438\u0434\u0451\u0442 \u0432 \u0430\u0433\u0435\u043d\u0441\u0442\u0432\u043e.<\/p>\n<p>  \u0412\u043e\u0442 \u0438 \u0432 \u043c\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430, \u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0434\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u0437\u0430 \u0442\u0430\u043a\u043e\u0439 \u0440\u0443\u0442\u0438\u043d\u043d\u043e\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b, \u0447\u0442\u043e <s>\u043d\u0435\u0437\u0440\u044f \u043d\u043e\u0448\u0443 \u0431\u043e\u0440\u043e\u0434\u0443<\/s> \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u0430\u043a <a href=\"http:\/\/maps.yandex.ru\">\u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u0430\u0440\u0442\u044b<\/a>, \u0438 \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0447\u0443\u0434\u0435\u0441\u043d\u043e\u0435 <a href=\"http:\/\/api.yandex.ru\/maps\/\">API<\/a>. \u041f\u043e\u0441\u0438\u0434\u0435\u0432 \u043e\u0434\u043d\u043e \u0443\u0442\u0440\u043e \u0438 \u0441\u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0432 \u0432\u0441\u0451 \u0441 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u043c \u0433\u0440\u0430\u0431\u0431\u0435\u0440\u043e\u043c \u043d\u0430 PHP \u0438 XPath \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0442\u0430\u043a\u0443\u044e \u0432\u043e\u0442 \u043a\u0440\u0430\u0441\u043e\u0447\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0443, \u0433\u0434\u0435 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0447\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b (\u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b) \u043f\u043e \u043b\u044e\u0431\u043e\u043c\u0443 \u0438\u0437 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u043d\u0438\u043c \u0432\u0437\u0433\u043b\u044f\u0434\u043e\u043c \u043e\u0446\u0435\u043d\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0431\u043b\u0438\u0436\u0435 \u043a \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u0443 \u0434\u0438\u0441\u043b\u043e\u043a\u0430\u0446\u0438\u0438 (\u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043c\u0435\u0442\u0440\u043e):<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/43c\/e70\/cc4\/43ce70cc42a22ec4b070d66131da6be7.png\" alt=\"\u0421\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430\"\/><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-184334","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/184334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=184334"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/184334\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=184334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=184334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=184334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}