Recherche expression dans fichier

Description

Ce script regroupe une fonction de recherche d'expression dans tous les fichiers d'un répertoire donné, et utilise une fonction de sortie (soit écran, soit fichier) en affichage.

Source / Exemple :


<?
$dir = $dir ? $dir : "/usr/work/web/www.monsite.com/htdocs/";

print "
<html>
<head></head>
<body>
<form>
<table>
	<tr>
		<td>Entrez le répertoire de recherche :</td>
		<td><input type='text' name='dir' value=\"$dir\" size=80></td>
	</tr>
	<tr>
		<td>Entrez la Chaîne à rechercher :</td>
		<td><input type=text name=expression value=\"$expression\"></td>
	</tr>
	<tr>
		<td colspan=2 align=center><input type=submit value='Rechercher'></td>
</table>
";

if ($expression && $dir) {
	$mydir = $dir;
                $mydir = preg_match("/\/$/", $mydir) ? $mydir : $mydir."/";
	$expression = addslashes($expression);
	$expression = str_replace("(", "\(", $expression);
	$expression = str_replace(")", "\)", $expression);
	$hash = array();

	recur($mydir);
	afficher_tableau($hash);
}

function recur($dir) {
	global $lefich2, $hash, $j, $expression;

	$chemin = pathinfo($dir);

	if ($chemin["basename"] == ".." || $chemin["basename"] == ".") return;
	if (!$dir2 = opendir($dir)) print "Échec ouverture $dir<br>";

	while ($file = readdir($dir2)) {
		if (is_dir($dir."/".$file) || $file == "." || $file == "..") @recur($dir."/".$file);
		else {
			if (!$lefich = fopen("$dir/"."$file", "r")) print "Échec<br>";
			else {
				$i = 0;

				while ($ligne = fgets($lefich, 4096)) {
					$i++;

					if (preg_match("/.*($expression).*/i", $ligne, $monres)) {
						$monres[0] = preg_replace(array("/</", "/>/"), array("", ""), $monres[0]);
						$monres[0] = preg_replace("/($expression)/i", "<font color=red>\\1</font>", $monres[0]);
						$hash[$dir][$file][$i] = $monres[0];
					}
				}
			}

			fclose($lefich);
		}
	}

	closedir($dir2);
}

print "
</form>
</body>
</html>
";

function afficher_tableau($tableau, $nomfic = "", $tab = "") {
	if (is_array($tableau)) {
		foreach ($tableau as $cle => $valeur) {
			if (is_array($valeur)) {
				if ($nomfic) {
					fputs($nomfic, "$tab$cle =>\n");
					@afficher_tableau($valeur, $nomfic, $tab."\t");
				} else {
					print $cle.' => <ul>';
					@afficher_tableau($valeur);
					print '</ul>';
				}
			} else {
				if ($nomfic) fputs($nomfic, "$tab$cle => $valeur\n");
				else print $cle." = ".$valeur." <br>";
			}
		}
	} else {
		if ($nomfic) fputs($nomfic, "$tableau");
		else print $tableau;
	}
}
?>

Conclusion :


Attention au divers droits sur les scripts que vous consultez.
Les recherches s'effectuent côté serveur.
A tester directement

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.