/** * Execute the console command. * * @return mixed */ public function handle() { $url = Url::where('visited', 'no')->first(); while ($url !== false) { $urlText = file_get_contents($url->url); //Obtendo conteúdo da URL //Obtendo as URLs do conteúdo preg_match_all('/<a href=["\']?((?:.(?!["\']?\\s+(?:\\S+)=|[>"\']))+.)["\']?>/i', $urlText, $urlsArr); //Obtendo os E-mails do conteúdo preg_match_all('/\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b/i', $urlText, $emailsArr); if (isset($urlsArr[1])) { $urlOriginalInfo = parse_url($url->url); //Dividindo as informações da URL foreach ($urlsArr[1] as $urlObtida) { $urlObtidaInfo = parse_url($urlObtida); //Dividindo as informações da URL obtida no conteúdo $scheme = isset($urlObtidaInfo['scheme']) ? $urlObtidaInfo['scheme'] : $urlOriginalInfo['scheme']; $host = isset($urlObtidaInfo['host']) ? $urlObtidaInfo['host'] : $urlOriginalInfo['host']; $novaUrl = $scheme . "://" . $host . $urlObtida; $urlObtidaJaExistente = Url::where('url', $novaUrl)->count(); if (!$urlObtidaJaExistente) { // Não estando, insere a URL $urlNova = new Url(); $urlNova->url = $novaUrl; $urlNova->visited = "no"; $urlNova->save(); } } } if (isset($emailsArr[1])) { foreach ($emailsArr as $emailObtido) { $emailObtidoJaExistente = Email::where('email', $emailObtido)->count(); if (!$emailObtidoJaExistente) { // Não estando, insere o e-mail $emailNovo = new Email(); $emailNovo->email = $emailObtido; $emailNovo->save(); } } } //Alterando a URL visitada para visited => yes $url->visited = "yes"; $url->save(); //Pegando a próxima URL $url = Url::where('visited', 'no')->first(); } }
public function short($code) { $url = Url::getBy(array('short' => $code)); $path = $url->getAttribute('long'); return redirect()->away($path); }