public function up() { $this->execute('ALTER TABLE galaxysss_1.gs_unions_office ADD category VARCHAR(100) NULL;'); $path = Yii::getAlias('@app/app/assets/1.xml'); $data = file_get_contents($path); $x = new \DOMDocument(); $x->loadXML($data); $ret = []; /** @var \DOMElement $element */ foreach ($x->documentElement->childNodes as $element) { if ($element instanceof \DOMElement) { $data = $element->getAttribute('data-jmapping'); $pos = Str::pos('lat', $data); $pos1 = Str::pos('lng', $data); $lat = Str::sub($data, $pos + 5, $pos1 - $pos - 7); $pos = Str::pos('lng', $data); $pos1 = Str::pos('category', $data); $lng = Str::sub($data, $pos + 5, $pos1 - $pos - 8); $pos = Str::pos('category', $data); $category = Str::sub($data, $pos + 11); $category = Str::sub($category, 0, Str::length($category) - 2); $category = explode('|', $category); $list = $element->getElementsByTagName("p"); if ($list->length == 1) { /** @var \DOMElement $content */ $content = $list->item(0); $content = $x->saveXML($content); $content = Str::sub($content, 3); $content = Str::sub($content, 0, Str::length($content) - 4); $content = explode('<br/>', $content); $ret2 = []; foreach ($content as $item) { if (StringHelper::startsWith($item, '<b>')) { $item = Str::sub($item, 3); $item = Str::sub($item, 0, Str::length($item) - 4); } $ret2[] = trim($item); } $name = $ret2[0]; array_shift($ret2); if (StringHelper::startsWith($ret2[count($ret2) - 1], 'Открытие')) { $ret2 = array_reverse($ret2); array_shift($ret2); $ret2 = array_reverse($ret2); } if (StringHelper::startsWith($ret2[count($ret2) - 1], '"ВкусВилл')) { $ret2 = array_reverse($ret2); array_shift($ret2); $ret2 = array_reverse($ret2); } $address = $ret2[0]; array_shift($ret2); $ret[] = [392, $address, $name, $lat, $lng, join('|', $category), Html::tag('p', join('<br/>', $ret2))]; } } } $this->batchInsert('gs_unions_office', ['union_id', 'point_address', 'name', 'point_lat', 'point_lng', 'category', 'content'], $ret); }
/** * Возвращает название статьи * * @return string */ public function getHeader() { $h4 = $this->getDocument()->find('div.rt-article/.module-content/h4')[0]; $name = $h4->plaintext; if (Str::sub($name, 0, 1) == '«') { $name = Str::sub($name, 1); } if (Str::sub($name, Str::length($name) - 1, 1) == '»') { $name = Str::sub($name, 0, Str::length($name) - 1); } $name = Str::sub($name, 0, 1) . Str::toLower(Str::sub($name, 1)); return $name; }
public function getContent() { if (is_null($this->content)) { $arr = $this->getContentAsArray(); $ret = []; $ret[] = Html::tag('p', Html::img($this->getImage(), ['width' => '100%', 'class' => 'thumbnail'])); foreach ($arr as $item) { if (StringHelper::endsWith($item, "\n")) { $item = Str::sub($item, 0, Str::length($item) - 1); } if (StringHelper::endsWith($item, "\r")) { $item = Str::sub($item, 0, Str::length($item) - 1); } $ret[] = Html::tag('p', $item); } $this->content = join("\r\n", $ret); } return $this->content; }
/** * @return array * [[ * 'name' * 'url' * ],...] */ public function getItems() { $doc = $this->getDocument($this->url); $ret = []; foreach ($doc->find('.rt-leading-articles/.rt-article') as $div) { $a = $div->find('.module-title/a')[0]; $url = 'http://www.ronnastar.com' . $a->attr['href']; $h4 = $div->find('.module-content/h4')[0]; $name = $h4->plaintext; if (Str::sub($name, 0, 1) == '«') { $name = Str::sub($name, 1); } if (Str::sub($name, Str::length($name) - 1, 1) == '»') { $name = Str::sub($name, 0, Str::length($name) - 1); } $name = Str::sub($name, 0, 1) . Str::toLower(Str::sub($name, 1)); $ret[] = ['name' => $name, 'url' => $url]; } return $ret; }
/** * @return array * [[ * 'name' * 'url' * ],...] */ public function getItems() { $doc = $this->getDocument($this->url); $ret = []; $c = 1; foreach ($doc->find('.wall_item') as $div) { if ($c > 1) { $url = 'https://vk.com' . $div->find('.wi_date')[0]->attr['href']; $html = $div->find('.pi_text')[0]; $header = explode('..............................', $html->plaintext); $header = trim($header[0]); if (StringHelper::endsWith($header, '.')) { $header = Str::sub($header, 0, Str::length($header) - 1); } $header = Str::toLower($header); $first = Str::toUpper(Str::sub($header, 0, 1)); $header = $first . Str::sub($header, 1); $ret[] = ['name' => $header, 'url' => $url]; } $c++; } return $ret; }
/** * Создает краткое содержимое текста, которое может быть также и HTML * * @param string $text * @param int $len * * @return string plain text */ public static function getMiniText($text, $len = 200) { $htmlSpecial = [' ' => ' ', '—' => '—']; $strip = strip_tags($text); foreach ($htmlSpecial as $code => $replaceChar) { $strip = str_replace($code, $replaceChar, $strip); } $strip = trim($strip); if (Str::length($strip) > $len) { return Str::sub($strip, 0, $len) . ' ...'; } return $strip; }
/** * Возвращает название статьи * * @return string */ public function getHeader() { $html = $this->getObjArticle(); $header = explode('..............................', $html->plaintext); $header = trim($header[0]); if (StringHelper::endsWith($header, '.')) { $header = Str::sub($header, 0, Str::length($header) - 1); } $header = Str::toLower($header); $first = Str::toUpper(Str::sub($header, 0, 1)); $header = $first . Str::sub($header, 1); return $header; }