Roman_applicant-site/app/Services/PageScrapper.php

57 lines
1.2 KiB
PHP
Raw Normal View History

2024-01-22 17:08:45 +03:00
<?php
namespace App\Services;
class PageScrapper
{
private string $url;
private string $contentMarker;
public function __construct($url, $contentMarker = '<div class=["\']content_info["\']>')
{
$this->url = $url;
$this->contentMarker = $contentMarker;
}
public function getHTML()
{
2024-01-23 15:45:52 +03:00
2024-01-22 17:08:45 +03:00
$page = file_get_contents($this->url);
2024-01-23 15:45:52 +03:00
$strForPregMatch = "/" . "{$this->contentMarker}" . "(.*)<\/div>/is";
2024-01-22 17:08:45 +03:00
$arr = [];
$rez = preg_match_all($strForPregMatch, $page, $arr);
2024-01-23 15:45:52 +03:00
return $content = $arr[1][0];
2024-01-22 17:08:45 +03:00
}
public function normalizeURLFile($content)
{
2024-01-23 15:45:52 +03:00
$rez = preg_match_all('/<a href="(.*)">/isU',$content,$arr);
$arr[1] = array_unique($arr[1]);
2024-01-22 17:08:45 +03:00
foreach ($arr[1] as $el) {
if (!str_starts_with($el, 'https')){
2024-01-23 15:45:52 +03:00
$content = str_replace($el,'https://mkgtu.ru' . $el,$content);
2024-01-22 17:08:45 +03:00
}
}
2024-01-24 15:23:23 +03:00
2024-01-22 17:08:45 +03:00
return $content;
2024-01-23 15:45:52 +03:00
}
public function cutHTML($content,$strForScissors)
{
$arr = [];
$rez = preg_match_all($strForScissors, $content, $arr);
$content = str_replace($arr[1],'',$content);
return $content;
2024-01-22 17:08:45 +03:00
}
}