public function run($args)
 {
     for ($i = ord('A'); $i <= ord('Z'); $i++) {
         $txt = RISTools::load_file('http://stadt-muenchen.net/strassen/index.php?name=' . chr($i));
         $txt = explode("<table class='full' border='0'>", $txt);
         $txt = explode("</table>", $txt[1]);
         preg_match_all("/<tr><td>(.*)<\\/tr>/siuU", $txt[0], $matches);
         foreach ($matches[1] as $match) {
             $y = explode('</a></td><td>', $match);
             $strassenname = preg_replace("/(s)tra(ß|ss)e\$/siu", "\\1tr.", trim(strip_tags($y[0])));
             $plz = trim(strip_tags($y[1]));
             $str = Strasse::model()->findByAttributes(["name" => $strassenname]);
             if (!$str) {
                 echo "Neu: " . $plz . " - " . $strassenname . "\n";
                 $str = new Strasse();
                 $str->name = $strassenname;
                 $str->plz = $plz;
                 $str->osm_ref = 0;
                 if (!$str->save()) {
                     var_dump($str->getErrors());
                 }
             }
         }
     }
 }
Example #2
0
 public static function init_streets()
 {
     if (static::$STREETS_INITIALIZED) {
         return;
     }
     $streets_by_length = [];
     $streets_by_norm = [];
     $maxlength = 0;
     /** @var array|Strasse[] $strassen */
     $strassen = Strasse::model()->findAll();
     foreach ($strassen as $strasse) {
         $norm = static::ris_street_cleanstring($strasse->name);
         $strasse->name_normalized = $norm;
         $streets_by_norm[$norm] = $strasse;
         $l = mb_strlen($norm);
         if (!isset($streets_by_length[$l])) {
             $streets_by_length[$l] = [];
         }
         $streets_by_length[$l][] = $norm;
         if ($l > $maxlength) {
             $maxlength = $l;
         }
     }
     static::$STREETS = [];
     for ($i = $maxlength; $i > 0; $i--) {
         if (isset($streets_by_length[$i])) {
             foreach ($streets_by_length[$i] as $n) {
                 if (!in_array($n, static::$RIS_STREET_IGNORE_STREETS)) {
                     static::$STREETS[] = $streets_by_norm[$n];
                 }
             }
         }
     }
     static::$STREETS_INITIALIZED = true;
 }