IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

problème de recuperation des titres de fichiers html


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Par défaut problème de recuperation des titres de fichiers html
    Bonjour,
    Je reviens sur mon problème de recuperation des titres de mes fichiers.
    En fait j'ai mes fichiers(html) dans un dossier.
    Je dois parcourrir tous les fichier de mon dossier et recuperer le titre de chaque fichier pour l'inserrer dans un champ d'une table de ma BD. Mais jusque là j'ai des petits problèmes. En plus du titre il prend le contenu du fichier or j'ai besoin uniquement du titre pour inserrer dans ma BD.

    Merci bien de m'aider!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <?php
    include("connexion.php");
     
       $page="";
       $fp="";
       $regs[1]="";
     
     
    	   if($dossier = opendir('D:\Program Files\EasyPHP 2.0b1\www\jo5'))
     
    			{
     
    				while ($Fichier = readdir($dossier)) 
    				 {
     
      						if ($Fichier != "." && $Fichier != "..") 
    						 {
        							$nomFichier = $Fichier;
     
    $fp = fopen("D:\Program Files\EasyPHP 2.0b1\www\jo5/$nomFichier","r");
     
     
    while (!feof($fp)) { //on parcourt toutes les lignes
      $page .= fgets($fp, 4096); // lecture du contenu de la ligne
      $titre = eregi("<title>(.*)</title>",$page,$regs); //on isole le titre
     															}
     
     
     
    		if($fp)
    			fclose($fp);
     
     
     
     
    }	
     
     
     
     
     
    }
     
    }	
     
    ?>

  2. #2
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match("#<title>(.*)</title>#Ui", $page, $regs);
    $titre = $regs[1];

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Par défaut
    en plus la regexp tu dois l'exécuter après la boucle (qui recupere le contenu du fichier)

  4. #4
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Par défaut problème de recuperation des titres
    Bonjour,

    J'ai toujours des problème après avoir fait vos corrections.
    Voici l'erreur qu'il me donne:
    Notice: Undefined offset: 1 in D:\Program Files\EasyPHP 2.0b1\www\monsites\essai_titre.php on line 43
    N° 2009-319/PRES/PM/MID du 18 mai 2009. JO N° 25 DU 18 JUIN 2009
    N° 2009-319/PRES/PM/MID du 18 mai 2009. JO N° 25 DU 18 JUIN 2009

    J'ai 3 fichiers dans mon repertoire designé et il me donne le titre d'un seul fichier qu'il dupliqe.

    Voici le code actuel :
    Merci bien de m'aider!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    </head>
     
    <body>
     
    <?php
     
    include("connexion.php");
     
     
       $page="";
       $fp="";
       $regs[1]="";
     
     
    	   if($dossier = opendir('D:\Program Files\EasyPHP 2.0b1\www\jo5'))
     
    			{
     
    				while ($Fichier = readdir($dossier)) 
    				 {
    				     if ($Fichier != "." && $Fichier != "..") 
    						 {
        							$nomFichier = $Fichier;
    	                      $fp = fopen("D:\Program Files\EasyPHP 2.0b1\www\jo5/$nomFichier","r"); //lecture du fichier
     
     
    		while (!feof($fp)) {       //on parcourt toutes les lignes
     	 $page .= fgets($fp, 4096); // lecture du contenu de la ligne
     
    					}
     
    		preg_match("#<title>(.*)</title>#Ui", $page, $regs);
     
    		$titre= $regs[1];	
    		echo $titre;
    		if($fp)
    			fclose($fp);
    			}
     
     
    		}
     
    }	
     
    ?>
    </body>
    </html>

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par défaut
    et si tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset(($fp)) {
     
        fclose($fp);
     
    }

  6. #6
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    Je crois qu'il y a une boulette dans la regex et qu'en plus, tu oublies de réinitaliser $page

    Et en petit commentaire, une bonne indentation rend le code plus lisible et évites les erreurs basiques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    </head>
     
    <body>
     
    <?php
     
    include("connexion.php");
     
     
       $page="";
       $fp="";
       $regs[1]="";
     
       // Je pense qu'il y avait une erreur dans la regex de Lapin, essayes avec ça
       $regex="#<title>(.+)</title>#" ;
     
    if($dossier = opendir('D:\Program Files\EasyPHP 2.0b1\www\jo5')) {
     
    	while ($Fichier = readdir($dossier))  {
    		if ($Fichier != "." && $Fichier != "..") 
    		{
    			// Penses à réinitialiser $page avant d'ajouter d'autres infos à son contenu...
    			$page = "";
     
    			$nomFichier = $Fichier;
     
    			$fp = fopen("D:\Program Files\EasyPHP 2.0b1\www\jo5/$nomFichier","r"); //lecture du fichier
     
    			while (!feof($fp)) {       //on parcourt toutes les lignes
    				$page .= fgets($fp, 4096); // lecture du contenu de la ligne
    			}
     
    			// La regex DOIT correspondre au format des titres que tu veux récupérer dans tes fichiers sinon, tu ne récupereras jamais rien
    			if (preg_match($regex, $page, $regs)) {
    				$titre = $regs[1];
    				echo $titre;
    			}
    			else {
    				echo "titre non trouvé: soit un probleme dans la regex, soit pas de balise <title> :-)";
    			}
     
    			if($fp) {
    				fclose($fp);
    			}
    		}
    	}
    }
     
    ?>
    </body>
    </html>

  7. #7
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Par défaut problème de recuperation des titres
    Bonjour,

    Quand j'execute le code il va dans le else en m'affichant "titre non trouvé...".
    Or les mêmes fichier sont present dans le dossier.

    Merci bien de m'aider toujours!

  8. #8
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Découpes ton problème par des echos (si pas de debugger) !

    Fait par exemple un echo de $page à chaque concaténation pour voir ce qu'elle augmente de chaîne à chaque fois,

    Pour le regex, donnes nous ton fichier avec les trois titre stp,

    L'option Ui de la regex ne doit pas être un problème.

    Edit: l'option U est à mettre pour la répétition des tags, je pense ...

  9. #9
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Par défaut problème de recuperation des titres
    Actuellement le problème est que il me donne le titre de certains fichiers et d'autres il met l'erreur suivante " Notice: Undefined offset: 1 in D:\Program Files\EasyPHP 2.0b1\www\monsites\essai_titre.php on line 47"

    Donc pour certains fichiers c'est bon mais pour d'autres c'est la notice qu'il met.

    Merci de m'aider!

  10. #10
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Par défaut problème de recuperation des titres
    En fait en observant mes differents fichiers j'ai pu constater que lorsque j'ouvre le fichier avec dreamweaver et que la balise fermante est seule sur une nouvelle ligne alors qu'il ya de la place sur la ligne precedente alors il n'arrive pas à recuperer le contenu de title et il m'affiche la notice .
    J'ai essayé avec beaucoup de cas c'est la même chose.
    est ce il ya une astuce pour gerer cela?

    Merci bien de m'aider

Discussions similaires

  1. [MySQL] problème de recuperation des titres de mes fichiers
    Par Abou Zar dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/12/2009, 14h57
  2. Réponses: 6
    Dernier message: 28/12/2007, 22h34
  3. Recuperation des noms de fichiers contenu dans un repertoire
    Par fafabzh6 dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/10/2007, 18h45
  4. Problème de visibilité des titres des objets Uipanel
    Par Flo22 dans le forum Interfaces Graphiques
    Réponses: 10
    Dernier message: 05/10/2007, 12h04
  5. Récupération des informations du fichier mdl
    Par Sensib dans le forum MATLAB
    Réponses: 3
    Dernier message: 17/11/2006, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo