begin process at 2012 05 27 18:14:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > RECHERCHE EXPRESSION DANS FICHIER

RECHERCHE EXPRESSION DANS FICHIER


 Information sur la source

Note :
8,2 / 10 - par 5 personnes
8,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Initié Date de création :28/01/2004 Date de mise à jour :03/05/2005 18:54:54 Vu / téléchargé :11 533 / 543

Auteur : Steph666

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 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

  • <?
  • $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;
  • }
  • }
  • ?>
<?
$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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 mai 2005 18:54:54 :
Une petite mise à jour au normes à été effectuée.

 Sources du même auteur

Source avec Zip CLASS PANIER CADDIE
Source avec Zip Source avec une capture PAGINATION
Source avec Zip CLASSE HTML EN PHP

 Sources de la même categorie

Source avec une capture MODULE JOOMLA 1.5 NOW LISTENING par Alcantornet
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK

Commentaires et avis

Commentaire de scullder le 29/01/2004 13:35:08

je pensais justement à faire ça ce matin parceque ça faisait trouze plombes que j'en avais besoin :) mais je l'aurais pas fait aussi bien :)

Commentaire de Steph666 le 29/01/2004 14:18:13


Merci scullder.

N'hésitez surtout pas à mettre des commentaires pour améliorer.

Commentaire de lorenzovb le 04/02/2004 11:46:03

Salut et Bravo Steph666,
le code à l'air super mais, idem j'aurais aimé des commentaires.

Merci
CiAO

Commentaire de Steph666 le 03/05/2005 18:57:16

Salut tlm,

Une petite mise à jour pour Justone72 à été effectué, mais j'ai pas eu trop le temps d'approfondir, un peu pressé, j'ai essayé de répondre à la demande au plus vite.

Si vous pouvez tester et me dire si gros bug ou pas.

En effet j'ai rajouté le fait de pouvoir télécharger ou lire le fichier suivant le cas en cliquant sur le nom de celui-ci.

Merci.

Commentaire de arceva le 11/07/2007 01:33:39

Super source hyper utile
Depuis le temps je voulais le faire
MERCI

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales