Cześć.
Moje boje z PHP ciąg dalszy. Prośba do bardziej ogarniętych o podpowiedzi. Ponieważ jak sam zaczne grzebać za bardzo w skrypcie poniżej, to tylko bardziej namieszam i później nie odkręcę. Będę musiał przywracać kod bez zmian. Otóż poniższy skrypt działą i wygląda jak chcę. Nie jest to może idealny kod, ale jak na drugi pisany od zera skrypt PHP w życiu chyba nie jest najgorzej ;)
Tylko jedną rzecz chciałbym poprawić/dodać. Mianowicie w momencie kiedy skrypt po kliknięciu na button nie stwierdzi żądnych błędów w id i zacznie odczytywać stronę oraz parsować z niej linki to fajnie żeby na ten czas pokazał się tekst typu "Please wait" zamiast całej zawartości strony. A po skończeniu pracy pokazała się taka strona z wynikami jak dzieje się to teraz. Wiem, że są też chyba jakieś możłiwości dodania animowanego "kółeczka" a'la buforowanie na filmików na YouTube czy tam progressbarów ala styl marque z Windows. Ale pewnie to cięzkie do ogarnięcia. Chociaż są chyba strony, które to umożliwiają do ogarnięcia w jednym pliku.
Z góry dziękuję za przykładowe kody. I przepraszam, zę męcze Was z tym PHPem, ale kiedy ktoś męczy nas ogarniających Delphi z banałami, staramy się nie oponować jeśli pokaże co próbował robić sam. Ja dodam, że próbowałem tutaj wstawiać jakieś teksty, ale zawartość strony i tak cały czas jest niestety widoczna. Pewnie trzeba by przeorganizowac obsługę tego form
, ale z braku dostatecznej wiedzy o PHP i HTML'u nie za bardzo wiem jak.
<?php
$Max_Chars_Count = 100;
$http_prefix = "http://";
$desturl = $_POST["LogSiteUrl"];
$validurl = "xbmclogs.com/show.php?id=";
$pastenotexistmsg = "The paste you are looking for does not exist";
$sitetitle = "Get urls from XMBC log file at xbmclogs.com site (C) olesio";
<title>
echo $sitetitle;
?>
</title>
</head>
<body>
<form method="post" action="<?php
echo $_SERVER["PHP_SELF"];
?>">
<b>Please paste your XBMC log file site url below.</b>
<br>
You can also type only log file id or log site url without "http://" prefix.
<br>
<br>
<br>
<input type="text" name="LogSiteUrl" size="48" value="<?php
echo $desturl;
?>" />
<br>
<br>
<br>
<input type="submit" name="GetUrlsFromLogFile"
value="Get opened urls from log file at xbmclogs.com site"/>
</form>
</body>
<?php
if (isset($_POST["GetUrlsFromLogFile"])) {
$desturl = str_replace($http_prefix, "", $desturl);
$desturl = str_replace($validurl, "", $desturl);
$logid = $desturl;
if (!is_numeric($logid)) {
echo "<font color=red>" . "ERROR: \"$logid\" is not a valid log id number!" . "</font><br><br>";
} else {
$desturl = $http_prefix . $validurl . $logid;
$pagecontent = file_get_contents($desturl);
$notexist = strpos($pagecontent, $pastenotexistmsg);
if ($notexist) {
echo $pastenotexistmsg . "<br><br>";
} else {
preg_match_all("/Opening: (.+)<\/div>/", $pagecontent, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
$string = $val[1];
$patterns = array();
$patterns[0] = '/<span[^>]+\>/i';
$patterns[1] = '/<\/span>/';
$replacements = array();
$replacements[0] = '';
$replacements[1] = '';
$validurl = preg_replace($patterns, $replacements, $string);
if (strlen($validurl) <= $Max_Chars_Count) {
$linktext = $validurl;
} else {
$linktext = substr($validurl, 0, $Max_Chars_Count) . "(...)";
}
echo '<a href="' . $validurl . '" target="_blank">' . $linktext . '</a><br><br>';
}
if (count($matches) == 0) {
echo 'No links found in log file.<br><br>';
} else {
if (count($matches) == 1) {
echo 'Found ' . count($matches) . ' link.<br><br>';
} else {
echo 'Found ' . count($matches) . ' links.<br><br>';
}
}
}
}
}
?>