Wyszukiwanie treści z kodu html, pomoc w interpretacji wyniku

0

Hej, napisałem dwa skrypty ogólnie pobrania kodu html ze strony i wyszukiwania odpowiedniego teksu w nim.
Skrypt 1:
Jeśli znajdzie szukaną frazę otwiera skrypt drugi.

<?php
$file = fopen("page.php", "w");   
$c = curl_init();
curl_setopt($c, CURLOPT_URL, "https://www.meczyki.pl/wyniki-na-zywo/crystal-palace-manchester-city/3450528.html");
curl_setopt($c, CURLOPT_FILE, $file); 
curl_exec($c);
$plik = file_get_contents('page.php');

if(preg_match_all('/<div class="stats-row-middle" data-v-08ffb7ec data-v-51055d8c>Strzały</', $plik))  // 
{
include ('skrypt2.php');
}
else{
}

curl_close($c);
fclose($file);
?>

Skrypt 2:
Przed każdą z wartości statystyk jest wartość zmiennej $tresc, już wiem że zrobiłem błąd bo chciałem aby po wyszukani frazy z 1 skryptu znaleźć położenie wartości statystyki strzały dla jednej i drugiej strony która w kodzie znajduje się równolegle przed (mb_strrpos() i po (mb_strripos() "strzały".

<?php

$tresc = print "<span data-v-08ffb7ec data-v-51055d8c>";

$plik = file_get_contents('page.php');

$pos1 = mb_stripos($plik, $tresc);
$pos2 = mb_strrpos($plik, $tresc);

if
($pos1 === false AND $pos2 === false) { // nie
 print "Szukany tekst nie został odnaleziony.";
 } else { // tak
 if ($pos1 !== false) { // pierwsze
 print "Pierwsze wystąpienie ciągu znaków \"$tresc\" ";
 print "zostało odnalezione na pozycji nr $pos1";
 }
 print "\n";
 if ($pos2 !== false) { // ostatnie
 print "Ostatnie wystąpienie ciągu znaków \"$tresc\" ";
 print "zostało odnalezione na pozycji nr $pos2";
 }
 }
?>

Teraz tylko ciekawi mnie ten wynik, bo nie mogę dojść co mi daje. Macie może jakiś pomysł jak to rozwiązać od tego etapu w którym jestem? potrzebuje te statystyki potem wrzucić do db.

Pierwsze wystąpienie ciągu znaków "1" zostało odnalezione na pozycji nr 241 Ostatnie wystąpienie ciągu znaków "1" zostało odnalezione na pozycji nr 620788

screenshot-20220320205426.png

0

Przerobiłem w jeden skrypt, działanie takie samo, co do tego jak najprościej przekopiować te statystyki do bazy danych myślicie, że najprostszym rozwiązaniem będzie użycie bardziej skomplikowanego wyrażenia regularnego czy bawić się z komendami mb?

<?php
$file = fopen("page.php", "w");   
$c = curl_init();
curl_setopt($c, CURLOPT_URL, "https://www.meczyki.pl/wyniki-na-zywo/crystal-palace-manchester-city/3450528.html");
curl_setopt($c, CURLOPT_FILE, $file); 
curl_exec($c);
$plik = file_get_contents('page.php');

$tresc = print "<span data-v-08ffb7ec data-v-51055d8c>";

$pos1 = mb_stripos($plik, $tresc);
$pos2 = mb_strrpos($plik, $tresc);


if(preg_match_all('/<div class="stats-row-middle" data-v-08ffb7ec data-v-51055d8c>Strzały</', $plik))  // 
{
if
($pos1 === false AND $pos2 === false) { // nie
 print "Szukany tekst nie został odnaleziony.";
 } else { // tak
 if ($pos1 !== false) { // pierwsze
 print "Pierwsze wystąpienie ciągu znaków \"$tresc\" ";
 print "zostało odnalezione na pozycji nr $pos1";
 }
 print "\n";
 if ($pos2 !== false) { // ostatnie
 print "Ostatnie wystąpienie ciągu znaków \"$tresc\" ";
 print "zostało odnalezione na pozycji nr $pos2";
 }
 }
}
else{
}

curl_close($c);
fclose($file);
?>
2

Wydaje mi się że najlepiej jakbyś użył mb_strpos() albo str_contains(), zamiast preg_match_all(). Nie potrzebujesz ywrażeń regularnych (z tego co widzę na razie).

0

Kilka spraw @R1D3Rekk.

  1. Czy faktycznie potrzebujesz zapisać treść strony do pliku page.php? Bo wiesz że możesz bezpośrednio zwrócić coś z curla do zmiennej, bez pliku, right?
  2. Nie używaj and ani or. Raczej użyj && oraz ||. Wiem że wyglądają gorzej, ale and oraz or mają zwalone priorytety operatorów, jeśli chcesz ich używać to musiałbyś używać dużo nawiasów.
  3. Czemu używasz mb_stripos() oraz mb_strrpos()? Nie powinieneś użyć mb_strripos()? Tzn albo oba z i albo oba bez, chyba nie?
  4. Co to?
    $tresc = print "<span data-v-08ffb7ec data-v-51055d8c>";
    

1 użytkowników online, w tym zalogowanych: 0, gości: 1