Avatar billede supersej Nybegynder
14. februar 2011 - 17:56 Der er 5 kommentarer

Php kode til at udtrække links fra log filer

Hej med alle jer fantastisk kloge mennesker.
Jeg er ved at rode med lidt gammel kode jeg fandt fra et php directory listing script. Jeg er dog gået lidt i stå nu her hvor jeg næsten har fået det til at lave hvad jeg ønsker mig.

Ønske: Mit ønske er at den for hver log fil den finder skal lede log filen igennem og finde download links. Den skal bruges til windows update filer som ligger i windowsupdate.log filen.
Og mit ønske er derfor at jeg kan uploade en log fil hvor scriptet kan finde alle filer til download så det er nemmere at downloade (filen fylder pt 800kb).

Jeg er kommet så langt at den kan liste første download, men da jeg stadig ikke er en ørn så ved jeg ikke hvordan jeg korrekt opretter en while kommando eller lign der søger for at den søger hele log filen igennem.

Et udtræk kunne være Downloading from http://microsoft.com/blabla to c:\windows\blabla hvor kun linket er tilbage.


Min kode til udtrækket ser pt sådan ud (kommentareren i toppen forklarer fint mit niveau :P)


// SLAM KODE for at vise http koden i url filen... hehe
$getall = file_get_contents($all[$i]); // henter alt indhold fra url filen
$cut = "ding from"; // Fortæller hvor linket skal skære fra efter linket (normal vis)
$cut2 = " to "; // Fortæller hvor linket stopper
$cut3 = " to "; //Fortæller hvor linket også kan stoppe
$link1 = strstr($getall, 'ding from http'); //Fortæller hvor linket starter


if((strstr($getall, ' to ') != "")){  // Hvis der efter linket står to C: så...
$link2 = strrev(substr($link1, 0, strpos($link1, $cut)));
$link2 = strrev(substr($link1, 0, strpos($link1, $cut3)));} //Skærer $cut3 fra


else {
$link2 = strrev(substr($link1, 0, strpos($link1, $cut)));} //Skærer $cut fra
$link3 = strrev(substr($link2,0,strpos($link2, strrev($cut2))));
$linkend = strrev($link2); //Det færdige resultat
$cleanlink = substr_replace($linkend, "", 0, 10); //Sletter ding from


Hvis der er nogen der kan gøre scriptet mindre/bedre er i også mere end velkommen.

På forhånd tak for jeres svar
Avatar billede supersej Nybegynder
16. februar 2011 - 16:56 #1
Ps er der nogen mulighed for at forøge antallet af points?
Avatar billede apocs Nybegynder
06. marts 2011 - 13:05 #2
Hvad med en regular expression?

$file = file_get_contents($all[$i]);

preg_match("#(http://.*\.[a-zA-Z]{5})#isU", $file, $matches);
Avatar billede supersej Nybegynder
11. april 2011 - 15:15 #3
Jeg gjorde lidt ala hvad du skrev apocs og har herunder vedhæftet noget at det kode jeg har lavet for at få den til at trække linksene ud fra filen. (også med extensions). Dog skal der nok stadig rydes op i koden

// SLAM KODE for at vise http koden i url filen... hehe
//$file = file_get_contents('http://supersej.dk/wudl/logs/WindowsUpdate.log');
$file = file_get_contents($all[$i]);
//FINDER .MSU (nødvendig for slipstream i win7)
global $vismsu, $visexe, $viscab;
if($vismsu == "1") {
preg_match_all('/to add URL (.*).msu for file/', $file, $a);
$count = count($a[1]);
echo "<b>Fil: ".$all[$i]."</b><br>";
echo "Antal .MSU Opdateringer fundet i log filen</b> = " .$count."<p>";
for ($row = 0; $row < $count ; $row++) {
//viser fildownloads uden de kryptiske tegn i slutning men ændrer ikke på at filnavnet er det samme når der downloades
// echo "<a href='".$a[1]["$row"].".msu' title='Download denne opdatering'>". substr_replace($a[1]["$row"], '', -41, 41) . ".msu</a><br />\n";
echo "<a href='".$a[1]["$row"].".msu' title='Download denne opdatering'>".$a[1]["$row"].".msu</a><br>";
}}
// FINDER .EXE
if($visexe == "1") {
preg_match_all('/Downloading from (.*).exe to/', $file, $a);
$count = count($a[1]);
echo "<p>Antal .EXE Opdateringer fundet i log filen</b> = " .$count."<p>";
for ($row = 0; $row < $count ; $row++) {
echo "<a href='".$a[1]["$row"].".exe' title='Download denne opdatering'>".$a[1]["$row"].".exe</a><br>";
}}
Avatar billede supersej Nybegynder
11. april 2011 - 15:16 #4
Så koden virker altså men kan godt gøres bedre
Avatar billede apocs Nybegynder
11. april 2011 - 22:15 #5
Det bliver vel ikke til et gyldigt link, ved at du bruger $a[1]["$row"]?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester