begin process at 2012 05 27 19:02:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > LECTURE DE FICHIER HTML SANS CHARGEMENT COMPLET

LECTURE DE FICHIER HTML SANS CHARGEMENT COMPLET


 Information sur la source

Note :
Aucune note
Catégorie :Chaîne de caratère Niveau :Débutant Date de création :09/04/2009 Vu / téléchargé :2 699 / 95

Auteur : jchan

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


 Description

Lecture d'un Tag (de la Structure globale ci-dessous) d'un fichier HTML sans le charger.Idéal pour un traitememt par lot de fichier et utile pour créer des fonctions personnalisées pour récupérer le titre,les metas tag,....
Opération réussie si début de Tag et fin de Tag trouvé sinon échec.

<!DOCTYPE ........ >
<HTML>
<HEAD>
<TITLE>Structure HTML</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>

PS:Pour une démonstration globale du script , un lien est indiqué dans le zip

J'ai mis l'algorythme à la place des commentaires dans la source.Les instructions utilisées parlent d'elles mêmes.
Les commentaires dans le fichier ne sont pas pris en compte.

DEBUT
|
|Tampon de réception de donneés = vide
|Tampon de résultat = vide
|drap = faux
|
|Ouverture du fichier
|
|Repeter Tant Qu'il y a des données
|'
|' Tampon de réception  <-- Lecture d'un paquet de données
|'  
|' Si début de Tag encore non trouve (drap = faux) Alors
|' |Recherche du debit de Tag dans le Tampon de réception de donneés
|' |Si recherche positif Alors
|' ||
|' ||Initialisation du Tampon de réception à partir du début de Tag
|' ||Initialisation de drap à vrai pour début de tag trouvé
|' |Fsi
|' Fsi
|'
|' Si début de Tag trouvé (drap = vrai) Alors
|' |
|' |Recherche du fin de Tag
|' | Si fin de tag trouvé Alors
|' | |Extraction des donnés jusqu'au fin de Tag
|' | |Ajout du Tampon réception au Tampon de résultat
|' | |Fermeture du descripteur de fichier
|' | |Retour du Tampon de résultat
|' | |- Fin du script -
|' | Sinon
|' | | Ajout du Tampon réception au Tampon de résultat
|' | | et continuation du lecture des données
|' | Fsi
|' Fsi
|'
|FinRTQ
|
|***** Fin de fichier et Fin de Tag non trouvé
|***** Cas particuliers ou les derniers octets du Tampon de réception
|***** contient les premiers octets du fin de tag et que la recherche
|***** du tag n'a pas abouti.
|
|Recherche du fin de Tag dans le Tampon de résultat (début de Tag OK)
|Si Recherche positif Alors
||
||Tampon de résultat <-- Extraction des données jusqu'au fin de Tag
|Sinon
|| Mise à zéro du Tampon de résultat (fin de Tag non trouvé)
|Fsi
|
|Retour du Tampon de résultat
|
FIN

Source

  • <?php
  • /*----- GetTagHTML($urlsite,$startTag,$endTag) ------
  • Entrée :
  • $urlsite - Adresse du fichier à lire
  • $starTag - Début de Tag ouvert ex: <body
  • $endTag - Fin de Tag ex: </body>
  • Sortie : Chaîne HTML
  • ex: <body><h1>.......</h1></body>
  • Le résultat peut être chargé par la fonction loadHTML pour un traitement personnalisé.
  • ------------------------------------------------------*/
  • function GetTagHTML($urlsite,$startTag,$endTag)
  • {
  • $strbuf = ""; //'Tampon de réception de donneés
  • $buffer = ""; //'Tampon de résultat
  • $strstartTag = ""; //'Recherche du début de Tag
  • $handle = null; //'Initialisation du descripteur de fichier
  • $drap = false; //'Début de Tag non trouvé
  • $handle = @fopen($urlsite, "r");
  • if(!$handle)
  • {echo "<br><br><center>...!...???...!...</center>"; return "";}
  • while(!feof($handle))
  • {
  • $strbuf = @fread($handle, 3072);
  • if($drap == false)
  • {
  • $strstartTag = stristr($strbuf,$startTag);
  • if($strstartTag)
  • {
  • $strbuf = $strstartTag;
  • $drap = true;
  • }
  • }
  • if($drap)
  • {
  • $pos1 = stripos($strbuf,$endTag);
  • if($pos1)
  • {
  • $strbuf = substr($strbuf,0,$pos1 + strlen($endTag));
  • $buffer .= $strbuf;
  • fclose($handle);
  • return $buffer;
  • }
  • else
  • $buffer .= $strbuf;
  • }
  • }
  • fclose($handle);
  • $pos2 = stripos($buffer,$endTag);
  • if($pos2 && $buffer)
  • $buffer = substr($buffer,0,$pos2 + strlen(endTag) + 1 ) ;
  • else
  • $buffer ="";
  • return $buffer;
  • }
  • $url = "http://www.singularite.info/";
  • $startTag = "<head";
  • $endTag = "</head";
  • $strHTML = GetTagHTML($url,$startTag,$endTag);
  • echo '<pre>'.htmlspecialchars($strHTML).'</pre>';
  • ?>
<?php


/*----- GetTagHTML($urlsite,$startTag,$endTag) ------
Entrée : 
	 $urlsite - Adresse du fichier à lire
	 $starTag - Début de Tag ouvert  ex: <body 
	 $endTag  - Fin de Tag           ex: </body>
Sortie : Chaîne HTML                     
         ex: <body><h1>.......</h1></body>
         Le résultat peut être chargé par la fonction loadHTML pour un traitement personnalisé.  	 
------------------------------------------------------*/


function GetTagHTML($urlsite,$startTag,$endTag)
{
$strbuf = "";	//'Tampon de réception de donneés
$buffer = "";	//'Tampon de résultat
$strstartTag = ""; //'Recherche du début de Tag  
$handle = null;	//'Initialisation du descripteur de fichier
$drap = false;		//'Début de Tag non trouvé


$handle = @fopen($urlsite, "r");

if(!$handle)
 {echo "<br><br><center>...!...???...!...</center>"; return "";}

 while(!feof($handle))
  {   
   $strbuf = @fread($handle, 3072);
   if($drap == false)
     {
      $strstartTag = stristr($strbuf,$startTag);
       if($strstartTag)	
         {
          $strbuf = $strstartTag;
          $drap = true;
         }
     }
       if($drap)
         {				
	   $pos1 = stripos($strbuf,$endTag);
           if($pos1)
             { 			
              $strbuf =  substr($strbuf,0,$pos1 + strlen($endTag));
              $buffer .= $strbuf;
              fclose($handle);		
              return $buffer;			
             }
             else
                $buffer .= $strbuf;
        }		
  }
						
fclose($handle);

$pos2 = stripos($buffer,$endTag);

if($pos2 && $buffer)
 $buffer = substr($buffer,0,$pos2 + strlen(endTag) + 1 ) ;
else
 $buffer ="";

return $buffer;

}

$url = "http://www.singularite.info/";
$startTag = "<head";
$endTag =   "</head";

$strHTML = GetTagHTML($url,$startTag,$endTag);

echo '<pre>'.htmlspecialchars($strHTML).'</pre>';

?>

 Conclusion

Pour l'affichage du résultat l'encodage n'est pas traité.Par
défaut c'est de l'iso. Je suis débutant en php d'où les fonctions basiques.

 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


 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

Commentaires et avis

Commentaire de steweb57 le 12/04/2009 21:08:37

Une petite question, comment fait tu si dans ton fichier html source tu trouve ce genre de code:
<div id='id1'>blablabla <div id='id2'>test</div>lalala </div>
Si tu fait $startTag = "<div id='id1'"; et $endTag = "</div"; je pense ca ne va pas marché !
Dans ton exemple la balise d'ouverture sera toujours la première trouvé dans le fichiers, et il faut que la balise de fermeture soit unique sinon c'est la première occurrence qui sera pris en compte.

Ce n'est donc pratique que pour récupérer des balises d'entête. Dommage que l'on ne puisse pas faire des recherches n'importe ou dans le document.

Commentaire de masternico le 13/04/2009 07:49:51

où alors, on utilise ça:
http://sourceforge.net/projects/simplehtmldom/

Commentaire de jchan le 13/04/2009 13:49:29

Si on a des div imbriqués,c'est pas évident.
Utilise la fonction preg_match_all().

A partir du résultat:

$strHTML = GetTagHTML($url,$startTag,$endTag);

$pattern = '/<div(.*)/i';
preg_match_all($pattern, $strHTML, $tabTag);

for($i=0;$i<count($tabTag[0]);$i++)
{
echo htmlspecialchars($tabTag[0][$i])."<br><br>";
}
il faut tester si c'est fiable à 100%.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,437 sec (3)

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