Skocz do zawartości

Zliczanie ilosci linkow (zdalnie)


gkeb

Rekomendowane odpowiedzi

Napisalem cosik takiego:

<?php
$a=fopen('https://www.moja-domena.pl/index.php', 'r');
$strona=fread($a, 99999999);
echo $strona;
echo "<br>";
preg_match_all("/<a href=[^<]+>/si",$strona,$linki);
print_r ($linki);
?>

i niby zaczyna zliczac linki ale nie wczytuje calej strony. Dlaczego?

I dodatkowe pytanie :blink: jak w skrypcie rozroznic linki wewnetrzne od zewnetrznych? Inna deklaracja w preg_match_all ("/<a href=[^<]+>/si" na "/<a href=http[^<]+>/si")??

Odnośnik do komentarza
Udostępnij na innych stronach

Spróbuj

function getContent($url=false) {

if(!$url) return false;

$ch=curl_init($url) or die(curl_error());

curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);

curl_setopt($ch, CURLOPT_HEADER, false);

$result=curl_exec($ch);

curl_close($ch);

return $result;

}

Ja tym wszystko robie i działa bdb

Odnośnik do komentarza
Udostępnij na innych stronach

i niby zaczyna zliczac linki ale nie wczytuje calej strony. Dlaczego?
W ten sposób co napisałeś nie odczytujesz całej strony

fread() odczytuje do długość bajtów ze wskaźnika pliku określonego przez uchwyt. Czytanie kończy się gdy odczytano długość bajtów, osiągnięty został koniec pliku (EOF), (dla sieciowych strumieni), kiedy pakiet stanie się dostępny lub (po otwarciu strumienia z przestrzeni użytkownika) kiedy 8192 bajtów zostanie odczytanych, cokolwiek nastąpi pierwsze.

Musisz przejść w pętli przez uchwyt i np. w pętli sprawdzać wyrażeniem regularnym czy dana linijka zawiera kod linka i jeśli tak w instrukcji if inkrementujesz stan licznika itd itp...

$uchwyt = fopen("https://www.spam.com", "r");
$tresc = '';
while (!feof($uchwyt))
{
 //TUTAJ Wyrażenie warunkowe "wykrywajace" linki dalsza obsluga wynikow
}
fclose($uchwyt);

I dodatkowe pytanie :D jak w skrypcie rozroznic linki wewnetrzne od zewnetrznych?
Link może być wpisany:

w pełnej postaci z podaniem nazwy domeny <a href="https://www.domena.pl">Link</a>

w pełnej postaci z podaniem nazwy domeny i nazwy pliku <a href="https://www.domena.pl/index.html">Link</a>

lub uproszczonej jako tylko linki lokalne: <a href="index.php">Link</a>

lub pełnej z podaniem lokalnej domeny: <a href="https://www.lokalna-domena.pl/index.php">Link</a>

lub pełnej z podaniem lokalnej domeny i pliku: <a href="https://www.lokalna-domena.pl/index.php">Link</a>

Wiec w dalszym etapie obróbki danych kolejnymi wyrażeniemi regularnymi musiał byś sprawdzać występowanie ciągu charakterystycznego da adresu www https://www.domena.pl | https://domena.pl porównywac z nazwa sprawdzanej domeny ponadto oraz linkow bez pełnej nazwy domeny przyjmując je za lokalne. Jest trochę kombinacji z tym, ale jest to moim zadaniem jak najbardziej wykonalne.Oczywiście musisz znać się na wyrażeniach regularnych ;)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności