//$_matches = array ( 0 => array ( 0 => '', 1 => '110', 2 => 'Центральный федеральный округ', ), 1 => array ( 0 => '', 1 => '111', 2 => 'Северо-Западный федеральный округ', ), 2 => array ( 0 => '', 1 => '112', 2 => 'Южный федеральный округ', ), 3 => array ( 0 => '', 1 => '241', 2 => 'Северо-Кавказский федеральный округ', ), 4 => array ( 0 => '', 1 => '113', 2 => 'Приволжский федеральный округ', ), 5 => array ( 0 => '', 1 => '114', 2 => 'Уральский федеральный округ', ), 6 => array ( 0 => '', 1 => '115', 2 => 'Сибирский федеральный округ', ), 7 => array ( 0 => '', 1 => '116', 2 => 'Дальневосточный федеральный округ', ), 8 => array ( 0 => '', 1 => '242', 2 => 'Центральный аппарат', ), ); foreach ($_matches as &$set) { $raw_html = file_get_contents('http://genproc.gov.ru/structure/subjects/district-' . $set[1] . '/'); if (!$raw_html) { echo $set[1] . ' - fail<br>'; continue; } $raw_html = substr($raw_html, strpos($raw_html, '<dl class="institutions">')); $raw_html = explode('<div>', $raw_html); foreach ($raw_html as &$office) { $office = explode('</a>', $office); if ($office[1]) { $office[0] = strip_tags($office[0]); $subject = explode("\n", $office[0]); $itemname = $subject[2]; $subject = (int) CGreensightRFSubject::GetID($subject[1]); $office[0] = trim(str_replace("\n", ' ', str_replace("\t", ' ', $office[0]))); $itemname = trim(str_replace("\n", '', str_replace("\t", '', $itemname))); $office[1] = trim(str_replace("\t", ' ', strip_tags($office[1], '<br>'))); $office[2] = ''; $office[3] = ''; $office[4] = ''; $arValues = array('IBLOCK_ID' => $iBlockTypeID, 'NAME' => $office[0], 'PREVIEW_TEXT' => $office[1], 'PREVIEW_TEXT_TYPE' => 'html', 'SORT' => $subject * 10, 'PROPERTY_VALUES' => array('SUBJECT_ID' => $subject, 'GIBDD_NAME' => $itemname)); if ($subject) { $arFilter = array('PROPERTY_SUBJECT_ID' => $subject, 'IBLOCK_ID' => $iBlockTypeID); } else { $arFilter = array('NAME' => $office[0], 'IBLOCK_ID' => $iBlockTypeID); } $res = $cibe->GetList(array(), $arFilter); $ar = $res->Fetch(); if ($ar['ID']) {
/** * Вычленить из адресной строки субъект РФ, город и прочее. * @param string $address * @return array */ public static function Address($address) { // достанем из адреса субъект РФ и город $_address = explode(',', $address); do { $subject_rf = ''; $city = ''; if ($_address[0] == 'Россия' || $_address[0] == 'Российская Федерация' || $_address[0] == 'Russia' || $_address[0] == 'Russian Federation') { $_address = array_slice($_address, 1); } $_address[0] = trim($_address[0]); // города - субъекты РФ if ($_address[0] == 'Москва' || $_address[0] == 'Санкт-Петербург') { $subject_rf = CGreensightRFSubject::GetID($_address[0]); $city = $_address[0]; $_address[0] = ''; $_address[1] = trim($_address[1]); // города-спутники if ($_address[1] == 'Зеленоград' || strpos($_address[1], 'поселок') !== false || strpos($_address[1], 'город') !== false || strpos($_address[1], 'деревня') !== false || strpos($_address[1], 'село') !== false) { $city = $_address[1]; $_address[1] = ''; $address = implode(', ', $_address); break; } $address = implode(', ', $_address); break; } // неизвестно что if (!$_address[1]) { $subject_rf = ''; $city = ''; $address = implode(', ', $_address); break; } $subject_rf = trim($_address[0]); $subject_rf = CGreensightRFSubject::GetID($subject_rf); if (!$subject_rf) { // регион не определился $subject_rf = ''; $city = ''; $address = implode(', ', $_address); break; } $_address[0] = ''; // район или город if (strpos($_address[1], 'район') !== false) { $_address[1] = ''; // точка попала в город if ($_address[2]) { $city = trim($_address[2]); $_address[2] = ''; $address = implode(', ', $_address); } else { $city = ''; $address = implode(', ', $_address); break; } } else { $city = trim($_address[1]); $_address[1] = ''; $address = implode(', ', $_address); } } while (false); $address = trim($address, ' ,'); $address = str_replace(' ', ' ', $address); return array('subject_rf' => $subject_rf, 'city' => $city, 'address' => $address); }