PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
Copy Clear
Copy Format Clear
<?php public function actionLinks(string $argv = 'text'): void { $pages = Page::find()->select(['content', 'url', 'title'])->all(); $news = News::find()->select(['content', 'url', 'title'])->all(); $mergeModels = array_merge($pages, $news); if ($argv === 'html') { echo '<h1>Отчёт о сломанных ссылках</h1>' . PHP_EOL; } else { echo 'Отчёт о сломанных ссылках' . PHP_EOL; } foreach ($mergeModels as $model) { preg_match_all('/href="([^"]+)"/', $model->content, $m); $brokenLinkPages = []; foreach ($m[1] as $item) { if ($item[0] === '/') { $item = 'https://fonar.tv' . $item; } if ($this->getStatusCode($item) !== 200) { $brokenLinkPages [] = $item; } } if (count($brokenLinkPages) > 0) { $entity = $model instanceof Page ? 'Cтраница' : 'Новость'; if ($argv === 'html') { echo PHP_EOL . $entity . ' <a href="https://fonar.tv/' . $model->url . '"' . '>' . $model->title . '</a>' . PHP_EOL; echo '<ul>'; } else { echo PHP_EOL . $entity . ' https://fonar.tv/' . $model->url . PHP_EOL; } foreach ($brokenLinkPages as $bl) { $code = $this->getStatusCode($bl); if ($code === 0) { $code = 'Неудалось подключиться'; } elseif ($code === 418) { continue; } if ($argv === 'html') { echo '<li><a href="' . $bl . '">' . $bl . '</a></li>' . PHP_EOL; } else { echo '* Битая ссылка: ' . $bl . ' (код ответа: ' . $code . ')' . PHP_EOL; } } if ($argv === 'html') { echo '</ul>'.PHP_EOL; } } } }
Show:  
Copy Clear