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()); } } } } }
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; }