Comment chercher des instructions dans tous les fichiers d'un répertoire et les

michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012 - 1 déc. 2010 à 09:21
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012 - 8 déc. 2010 à 07:26
bonjour,
je cherche à repérer des instructions de code dans des fichiers, et à les imprimer à l'écran tout bêtement. Comment faire ?
exemple :
dans le dossier SITE, j'ai 100 pages php. chaque page php comporte un bout de code du genre $idproduit=1 ou $idproduit=3 ou $idproduit=10 etc ...
j'aimerais donc que le programme parcourt les 100 pages et imprime à l'écran 100 lignes :
$idproduit=1
$idproduit=3
$idproduit=10
etc ...
est ce possible ?
merci

michel

24 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
1 déc. 2010 à 09:29
Salut,

Où bloques tu exactement ?
Il suffit de parcourir le dossier SITE, d'ouvrir les fichiers voulus, de rechercher l'instruction à l'aide d'une regex, de mettre le résultat dans une variable et d'afficher le tout. Non ?


Cordialement,


Kohntark -
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
1 déc. 2010 à 09:35
salut kohntark,
oui c'est ça, tu as raison ... mais :
1- comment parcourt on un site ?
2- comment ouvre t on le premier fichier, puis le 2ème puis le 3 ème etc ... sachant que les noms de fichiers sont divers ( du genre coco.php, bidule.php, test.ph etc ...
3- et peux tu me dire quel regex écrire pour trouver le code $idproduit= ( ça c'est commun à chaque fichier, mais je veux afficher la suite, c'est à dire $idproduit=1 ou =2 ou = 12 etc ... c'est le chiffre qui m'intéresse )
MERCI


michel
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
1 déc. 2010 à 09:47
Ma réponse est toute bête mais pourquoi pas un GREP en récursif ??
S.
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
1 déc. 2010 à 09:56
un GREP en récursif ... ? c koi ? ;o)

michel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
1 déc. 2010 à 10:23
tu peux lancer des commandes système depuis PHP.
Cherche 'GREP' sur Google tu vas comprendre.
S.
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
1 déc. 2010 à 10:30
merci en tout cas pour ton aide. je vais aller voir, mais suite au message de khontark, j'ai cherché comment parcourir un dossier, et j'ai trouvé ça ... peux tu me dire quoi écrire en expression régulière dans le while ?
MERCI

<?php
$current_dir='/home/monsite/www/expeditions/';
$dir=opendir($current_dir);
while ($fichier = readdir($dir))
{
$inF = fopen($fichier,"a");

ICI JE METS QUOI POUR TROUVER LA CHAINE "$idproduit" DANS LE CORPS DU FICHIER ACTELLEMENT OUVERT ????

fclose($inF);

}

?>

michel
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
1 déc. 2010 à 10:41
bonjour michel

kohntark t'as donné la méthode à toi de chercher il veut que tu bosses un peu. Tu as phpcs et google ... ET NOUS
je te donne le départ
LES FICHIERS fopen() fwrite() fclose() ... le manuel

a++

<?php

//ecrire une fonction qui remplace avec une regex et 
//renvoi un tableau
//function action(){ ton code }

//avec php5
//les fichiers php ou autre change l'extension
print_r(glob("*.php"));
//parcours du repertoire
echo '<hr>';
foreach(glob("*.php") as $file){
//echo action($file); 
echo $file.'
';
}

?>
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
1 déc. 2010 à 11:13
voici une méthode (un peu brutale) !
d'afficher le contenu de tes php
maintenant tu devrais ecrire une regex qui colorise par exemple
tes choix avant de les traiter ... (piste pédagogique)

<?php
//ecrire une fonction qui remplace avec une regex et renvoi un tableau
//
function action($file_to){
$file=fopen($file_to,"r") or exit("pas ouvrable");
while(!feof($file))
{
echo fgets($file). "
";
}
fclose($file) or exit("pas fermable");
}

//avec php5
//les fichiers php ou autre change l'extension
print_r(glob("*.php"));
//parcours du repertoire
echo '<hr>';
foreach(glob("*.php") as $file){
echo ''.$file.'

';
action($file);
echo '<hr>';
}
?>
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
1 déc. 2010 à 11:33
A++ michel
j'arrête là (je développe pour toi == pas bon !)
bne programmation pour comprendre quelques liens choisis

http://www.smfr.org/mtnw/docs/FiltersRegExp.html
http://php.net/manual/fr/book.regex.php
http://www.expreg.com/memo.php
http://www.phpsources.org/scripts-Regex-PHP.htm
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
1 déc. 2010 à 13:13
MERCI ! je vais essayer .. tu sais, j'ai cherché toute la matinée, je ne suis pas un feignant, mais avec un prénom comme le mien, tu te doutes que je ne suis plus tout jeune ... alors j'ai du mal ;o)
j'essaye de suite !


michel
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
1 déc. 2010 à 13:22
alors ça a l'air de bien afficher les contenus des fichiers, mais je ne peux pas voir, car LA FENETRE FIREFOX SE FERME immédiatement !!!! comment ça se fait ? j'ai essayé en insérant un BREAK; à la fin .. mais non, la fenêtre se ferme, on ne voit donc plus l'affichage !


michel
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
1 déc. 2010 à 13:29
est ce qu'il ne faut pas modifier ce code pour que la fenêtre reste ouverte ? :

fclose($file) or exit("pas fermable");

michel
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
1 déc. 2010 à 14:19
re

je l'ai essayé sur ie8 et firefox avec wamp ça tourne ...
tu as peu etre trop de fichiers dans le repertoire et c'est un problème
de temps d'execution alors. tu peux mettre ça au début du script
mon bout de script est un exemple il faut optimiser, améliorer, c'est une
idée pour te guider.

//60 sec
set_time_limit (60);

pour comprendre

http://php.net/manual/en/function.set-time-limit.php

http://www.phpcs.com/codes/GENERER-VOLUME-IMPORTANT-DONNEES-SANS-HEURTER-TIMEOUT-PHP_39811.aspx

a++


<?php
set_time_limit (60);

//ecrire une fonction qui remplace avec une regex et renvoi un tableau
//
function action($file_to){
$file=fopen($file_to,"r") or exit("pas ouvrable");
while(!feof($file))
{
echo fgets($file). "
";
}
fclose($file) or exit("pas fermable");
}

//avec php5
//les fichiers php ou autre change l'extension
print_r(glob("*.php"));
//parcours du repertoire
echo '<hr>';
foreach(glob("*.php") as $file){
echo ''.$file.'

';
action($file);
echo '<hr>';
}
?>
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
1 déc. 2010 à 18:54
non ce n'est pas ça ... et il n'y a que 3 petits fichiers très courts dans le répertoire traité. Mais bon, l'affichage n'est pas important pour le moment. Ce le sera quand il faudra afficher le résultat de l'expression régulière, que je n'ai toujours pas trouvée d'ailleurs ( malgré mes recherches et essais, j'insiste .. je cherche ! )

pourtant ça ne doit pas être sorcier : dans chaque fchier, chercher $idproduit= et afficher à l'écran CE QUI SUIT $idproduit . donc je pense que je dois utiliser POS qui me donnera la position de ce que je recherche dans la chaine, et je dois extraire les caractères 12 13 14 après la position de la chaine $idproduit ... c'est ça ? donc en fait, si c'est ça, je n'ai pas besoin des expresisons régulières en fait, si ? la variable $file comprend bien la totalité du code du fichier n'est ce pas ?

bref, je continue !
MERCI à+


michel
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
1 déc. 2010 à 20:58
bonsoir
si ça peu t'aider
si c'est pour remplacer tu as la fonction str_replace()
a++

<?php
$pattern = "ce que tu cherches";

function action($file_to){
$file=fopen($file_to,"r") or exit("pas ouvrable");

$line="";

while(!feof($file))
{

$line=fgets($file). "
";

//$pattern = "ce que tu cherches";
if(preg_match("/$pattern/",$line)){
echo str_replace($pattern,''.$pattern.'',$line);
}

}




fclose($file) or exit("pas fermable");
}

//avec php5
//les fichiers php ou autre change l'extension
print_r(glob("*.php"));
//parcours du repertoire
echo '<hr>';
foreach(glob("*.php") as $file){
echo ''.$file.'

';
action($file);
echo '<hr>';
}
?>
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
1 déc. 2010 à 21:23
merci vraiment pour ton aide, c'est très sympa ! je m'y remets demain. en fait, j'ai un vieux site marchand, programmé page par page en "dur" sans rewriting. dans ma base de donnée produits, je n'ai qu'un code produit, un libellé et un prix. et j'en ai marre de remplir des tableaux excel à la main pour les soumettre aux comparateurs de coût qui veulent bien plus d'infos qu'un libellé ou un prix ( il manque surtout l'url de la page et l'url de l'image ). donc en fait, ma clé, c'est l'id produit qui se trouve dans chaque page et qui se trouve aussi dans la base de données, et je voudrais ainsi ajouter les url dans la table PRODUITS sans avoir à les retaper !
je ne sais pas si je suis clair, mais voilà le but de tout ça !!

bonne nuit ;o)

michel
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
1 déc. 2010 à 21:40
ça m'énerve ......

Parse error: syntax error, unexpected $end

michel
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
2 déc. 2010 à 07:39
j'étais pas réveillé .. manquait juste une }
mais bon, à nouveau PAS D'AFFICHAGE ! ça zap tout de suite et ça revient à la page d'avant. je suis sur firefox. je vais essayer avec ie

michel
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
2 déc. 2010 à 09:47
Re,

Il serait bien que tu repostes le code complet que tu as fait afin que l'on ait une idée claire de ce qu'il se passe.

Concernant tes histoires d'id, d'url page / image j'avoue ne pas avoir tout compris.

Cordialement,


Kohntark -
0
michelvernet2 Messages postés 62 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 23 octobre 2012
2 déc. 2010 à 18:49
cod57 m'a super aidé, j'arrive déjà à quelquechose, mais je dois encore épurer les résultats. comment faire pour extraire la partie numérique d'une chaine ? exemple $a="sdhfkqs!'123ksq_jdf" je voudrais obtenir $b="123"
MERCI

michel
0
Rejoignez-nous