Pomoc przy kodzie

0

Witam wszystkich. Mam prosbe - moj wykładowca na zaliczenie walnal mi taki kawałek kodu i kazał mi go wyjaśnić, ale ja jestem zielona z PHP i dlatego proszę Was o pomoc. Wiem ze nie ma nic za darmo ale moze zlitujecie sie nade mna, ja napawd enie wiem nawet czym to sie je.

Czy ktoś mógłby mi wytłumaczyć w miarę możliwości o co chodzi w tym kodzie od początku? bardzo bym prosiła !

pomozcie - Kamila.

<?php
function drzewko($folder) {
global $pliki;
if($folder[strlen($folder)-1] != "/") {
$folder .= "/";
}
$id_f = opendir($folder);
if($id_f) {
while($plik = readdir($id_f)) {
if($plik == '.' || $plik == '..') {
continue;
}
if(is_dir($folder . $plik)) {
drzewko($folder . $plik);
} else {
$pliki[] = $folder . $plik;
 }
}
closedir($id_f); 	
}
return $pliki;
}

function czytelne($spis) {
$rozszerzenie[] = "txt";

foreach($rozszerzenie as $roz) {
$dl_roz = strlen($roz);
foreach($spis as $plik) {
if(substr($plik, -$dl_roz) == $roz) {
$wynik[] = $plik;
  }
 }
}
return $wynik;
}

if(isset($szukane) && $szukane != '') {
$szukane = ereg_replace("[\*\.\$/]", "", $szukane);
$szukane_slowa = split("\ ", $szukane);
array_unshift($szukane_slowa, $szukane);
$ile_slow = count($szukane_slowa);
unset($szukane);

$pliki = drzewko("./../wyk/pliki/");
$czytelne = czytelne($pliki);
unset($pliki);
sort($czytelne);

foreach($czytelne as $plik) {
$id_pliku = fopen($plik, "r");
$zawartosc = fread($id_pliku, filesize($plik));
for($i=0; $i < $ile_slow; $i++) {
if(ereg($szukane_slowa[$i], $zawartosc)) {
$trafienia[] = $folder .$plik;
 }
}
fclose($id_pliku);
}

if(!isset($trafienia)) {
echo 'brak pliku ktory spełnia kryteria';
} else {
$trafienia = array_unique($trafienia);
sort($trafienia);

echo'słowo znajduje się w pliku:';

foreach($trafienia as $pojedyncze) {
echo ' <b>';
$poj=" ";

for($i=22; $i<=strlen($pojedyncze);$i++)
{ 
$poj=$poj.$pojedyncze[$i];
}

$odej_n = substr($poj, 0, -5 );
echo '<font class="normal">
      <a href=" '.' ../wyk/pliki/'.$odej_n.'" target="_new">'.$odej_n.'</a>
      </font>';  

echo' </font><br> ';
  }
 }
} else {
echo 'Proszę podać tekst !';
}
?>
</b>
0

jeżeli dokładnie taki kodzik Ci dał, to na wstępie współczuję (jemu)
drzewko() zwraca listę plików w katalogu i podkatalogach (rekurencja). Przykładowy wydruk:

Array
(
    [0] => ../download/flash/flash.rar
    [1] => ../download/flash/index.php
    [2] => ../download/gfx/index.php
    [3] => ../download/GoogleEarth.exe
    [4] => ../download/index.php
    [5] => ../download/nkat.rar
    [6] => ../download/nkat_screen.gif
    [7] => ../download/seamonkey-1.0b.en-US.win32.installer.exe
    [8] => ../download/szesciokat.rar
    [9] => ../download/szesciokat_screen.gif
)

czytelne() zostawia z wyżej wymienionej listy tylko pliki tekstowe ( $rozszerzenie[] = "txt"; )

procedurka głowna
*wywołuje dwie wyżej wymienione
*sortuje dane
*szuka w pętli $szukane_slowa i jeżeli znajdzie to dorzuca sciezke do tablicy $trafienia
*ciekawa jest linia $trafienia = array_unique($trafienia);. Stawiałbym, że to konsekwencja array_unshift($szukane_slowa, $szukane);, ale nie będę się w to zagłębiał...
*w pętli for($i=22; $i<=strlen($pojedyncze);$i++) następuje kopiowanie znaków z nazwy pliku, ale skąd to 22 to nie wiem
*w linijce $odej_n = substr($poj, 0, -5 ); chyba miało być -4 (obcięcie rozszerzenia i kropki) [green]
*ponadto podwójne zamknięcie znacznika font
*szczerze mówiąc, to jak nie sprawdze, to nie uwierze, że ten kod działa. Takie moje pierwsze wrażenie...

częściowo sformatowany kod:

<?php
function drzewko($folder) 
{
	global $pliki;
	
	if($folder[strlen($folder)-1] != "/") {
		$folder .= "/";
	}
	
	$id_f = opendir($folder);
	if($id_f) {
		while($plik = readdir($id_f)) {
			if($plik == '.' || $plik == '..') {
				continue;
			}
			if(is_dir($folder . $plik)) {
				drzewko($folder . $plik);
			} else {
				$pliki[] = $folder . $plik;
			}
		}
		closedir($id_f);         
	}
	return $pliki;
}

function czytelne($spis) {
	$rozszerzenie[] = "txt";

		foreach($rozszerzenie as $roz) {
		$dl_roz = strlen($roz);
		
		foreach($spis as $plik) {
			  if(substr($plik, -$dl_roz) == $roz) {
				  $wynik[] = $plik;
			  }
		 }
	}
	return $wynik;
}

if(isset($szukane) && $szukane != '') {
	$szukane = ereg_replace("[\*\.\$/]", "", $szukane);
	$szukane_slowa = split("\ ", $szukane);
	array_unshift($szukane_slowa, $szukane);
	$ile_slow = count($szukane_slowa);
	unset($szukane);

	$pliki = drzewko("./../wyk/pliki/");
	$czytelne = czytelne($pliki);
	unset($pliki);
	sort($czytelne);

	foreach($czytelne as $plik) {
		$id_pliku = fopen($plik, "r");
		$zawartosc = fread($id_pliku, filesize($plik));
		for($i=0; $i < $ile_slow; $i++) {
			if(ereg($szukane_slowa[$i], $zawartosc)) {
				$trafienia[] = $folder .$plik;
			 }
		}
		fclose($id_pliku);
	}

	if(!isset($trafienia)) {
		echo 'brak pliku ktory spełnia kryteria';
	} else {
		$trafienia = array_unique($trafienia);
		sort($trafienia);

		echo'słowo znajduje się w pliku:';

		foreach($trafienia as $pojedyncze) {
				echo ' <b>';
				$poj=" ";

				for($i=22; $i<=strlen($pojedyncze);$i++) {
					$poj=$poj.$pojedyncze[$i];
				}

				$odej_n = substr($poj, 0, -5 );
				
				echo '<font class="normal">
				      <a href=" '.' ../wyk/pliki/'.$odej_n.'" target="_new">'.$odej_n.'</a>
				      </font>'; 

				echo' </font><br> ';
		  }
	 }
} else {
echo 'Proszę podać tekst !';
}

</b>

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