//$_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']) {
Esempio n. 2
0
 /**
  * Вычленить из адресной строки субъект РФ, город и прочее.
  * @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);
 }