Membres


Pas encore membre ?
inscrivez-vous ici

Connexion :
Login
Code
Mot de passe perdu ?
Liste des membres

Parser php de favoris web

Parser php de favoris web


Pages : [1] 2

Parser php de favoris web     Posté le 13/08/2005 à 00:00
Sky
Administrateur
sky
Site perso
4157 posts
Inscrit le : 13/08/2003
Ce code n\'est pas du tout fini ou destiné à un but pédagogique pour l\'instant.

Je voudrai ajouter un service pour les membres qui serai de pouvoir ce partager nos favoris internet.

Le code pour faire le parser est plus cmplexe que je pensé en faite smiley

Voici mon code pour l\'instant :
<?php
function link_extract($str)
{
    
preg_match("(<A HREF=\\\"(.*)\\\" ADD_DATE=\\\"(.*)\\\" ICON=\\\"(.*)\\\"? LAST_CHARSET=\\\"(.*)\\\" ID=\\\"(.*)\\\"+>(.*)</A>)\", $string, $output, PREG_OFFSET_CAPTURE); 
    return($out);
}

$tab=file(\'bookmarks.html\');

for($i=0; $i<count($tab); $i++){
$tab[$i]=str_replace(\"  \", \"\", $tab[$i]);
$tab[$i]=str_replace(\"\\n\", \"\", $tab[$i]);

  if($tab[$i]!=\"\"){
  
  
  
    if(eregi(\'<dl>\', $tab[$i])){
      echo \'<ul>
      \'; 
    }elseif(eregi(\'</dl>\', $tab[$i])){
      echo \'</ul>
      \';
    }elseif(eregi(\'<dt>\', $tab[$i])){
    
    $pattern = \'|<[^>]+>(.*)</[^>]+>|U\';
    preg_match($pattern, $tab[$i], $out, PREG_OFFSET_CAPTURE, 3);  
     
    $link = link_extract($out[0][0]);

    if($link[0][0]!=\"\"){
      echo \'
      <li><a href=\"\'.htmlentities($link[1][0], ENT_QUOTES).\'\">\'.htmlentities($link[5][0], ENT_QUOTES).\'</a></li>\';
    }else{
      echo \'
      <li><b>\'.htmlentities($out[1][0], ENT_QUOTES).\'</b></li>\';
    }

    }
    
    
    
  }

}
?>
  



(3run0, pour être sur du cde, edit le poste et récupère le code de là)

Le problème pour l\'instant vient de ma regex.
Chaque lien peut avoir un certain nombre d\'attribut, pas un nombre défini.

la regex en question :
preg_match(\"(<A HREF=\"(.*)\" ADD_DATE=\"(.*)\" ICON=\"(.*)\"? LAST_CHARSET=\"(.*)\" ID=\"(.*)\"+>(.*)</A>)\", $string, $output, PREG_OFFSET_CAPTURE)


Le probleme, c\'est que je ne sais pas comment rendre certaines balise facultatif...

Bref, je post ceci au cas au qq serai interresser de partir de cette base qui fonctionne quand même.

Sky

________________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 13:03
3run0
Administrateur
Avatar
1759 posts
Inscrit le : 1/10/2004
Je suis en plein dans un truc que je veux pas lacher smiley mais je regarde ça tout à l\'heure, enfin si j\'arrive à piger qlq chose smiley
L\'idée de partager les favoris est super bonne, les dix derniers referer au bout d\'un momment on les connait par coeur! smiley

_______________________
_ww.gabian-herault.com
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 14:57
3run0
Administrateur
Avatar
1759 posts
Inscrit le : 1/10/2004
pour rendre un caractère ou une classe facultative dans une regex c\'est le ? ou {0,1}, mais le melange php xml le tout agrémenté de regex smiley j\'avoue que je suis un peu largué par ton code.

_______________________
_ww.gabian-herault.com
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 15:02
sky
Administrateur
Avatar
Site perso
4157 posts
Inscrit le : 13/08/2003
Y\'a pas de xml, je pensé que je pouvais parser le fichier en utilisant la classe simpleXml de php5, mais quand tu exporte les bookmarks, c\'est un fichier html qui est généré.
Donc, ne tient pas compte du nom de fichier smiley

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 15:57
3run0
Administrateur
Avatar
1759 posts
Inscrit le : 1/10/2004
mais en fait tu parles de parser le fichier local des membres qui desirent s\'inscrire à ce service ? lol j\'atterris!

_______________________
_ww.gabian-herault.com
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 16:22
sky
Administrateur
Avatar
Site perso
4157 posts
Inscrit le : 13/08/2003
Oui, via un upload, je parse leurs fichier pour m\'en sevir comme je le souhaite.
Tu peut voir ou je test ici :
http://www.graphiks.net/demo/test/php5/xml/favoris.php

Je bloque en faite pus que le favicon qui est une suite de caractere que je pige pas du tout ...

je met mon nouveau code ici.
J\'ai juste changer la façon de parser, sans la regex que j\'arrive ps à faire :
<?php
function link_extract($str)
{
    
preg_match("(<A HREF=\\\"(.*)\\\"+>(.*)</A>)\", $str, $out, PREG_OFFSET_CAPTURE);    
    return($out);
}
function sort_array($temp) {
  foreach($temp as $num => $texte){
    $texte=str_replace(\' \', \'\', $texte); $texte=str_replace(\'=\', \'\', $texte);
    $newtemp[$texte]=$temp[($num+1)];
  }
  return $newtemp;
}
function change_date($mktimedate){
  $newdate=date(\"d-m-Y\", $mktimedate);
  return $newdate;
}


$tab=file(\'bookmarks.html\');

foreach($tab as $clef=>$valeur){

$valeur=str_replace(\"  \", \"\", $valeur);
$valeur=str_replace(\"\\n\", \"\", $valeur);

  if($valeur!=\"\"){

    if(eregi(\'<dl>\', $valeur)){
      echo \'<ul>\'.\"\\n\"; 
    }elseif(eregi(\'</dl>\', $valeur)){
      echo \'</ul>\'.\"\\n\\n\";
    }elseif(eregi(\'<dt>\', $valeur)){
    
    $pattern = \'|<[^>]+>(.*)</[^>]+>|U\';
    preg_match($pattern, $valeur, $out, PREG_OFFSET_CAPTURE, 3);  
     
    $link = link_extract($out[0][0]);
    
    $temp=split(\'\"\',$link[1][0]);
    $newtemp=sort_array($temp);

    
    if($link[2][0]!=\"\"){
      echo \'<li><a href=\"\'.htmlentities($temp[0], ENT_QUOTES).\'\" title=\"Ajout&eacute; le : \'.change_date($newtemp [\'ADD_DATE\']).\'\">\'.htmlentities($link[2][0], ENT_QUOTES).\'</a> (img : \'.$newtemp[\'ICON\'].\')</li>\'.\"\\n\";
    }else{
      echo \'<li><b>\'.htmlentities($out[1][0], ENT_QUOTES).\'</b></li>\'.\"\\n\";
    }

    }
    
  }

}
?>


Sky

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 16:33
3run0
Administrateur
Avatar
1759 posts
Inscrit le : 1/10/2004
Oui mais, dans les favoris il ya aussi, les ftp, les bdd, lien vers webmail, les photo de sa 1ere communion... il n\'y a pas que des liens partageables.
Enfin c\'est pas pour te casser les pieds smiley

_______________________
_ww.gabian-herault.com
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 16:51
sky
Administrateur
Avatar
Site perso
4157 posts
Inscrit le : 13/08/2003
Lol, alors là ... chacun ce débrouille.
On peut quand meme très facilement editer un fichier ...

Bon, ça complique les choses, mais, comment faitre autrement ?

Sky

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 17:01
3run0
Administrateur
Avatar
1759 posts
Inscrit le : 1/10/2004
Un formulaire en javascript qui permet de cocher les liens qu\'on veut partager. smiley
Plus serieusement est-ce qu\'en parsant le fichier il serait pas possible de retenir ou d\'exclure un dossier de liens ex: \"barre perso\" \"site utile\" \"site à partagé\" tu vois ce que je veux dire ?

_______________________
_ww.gabian-herault.com
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 17:07
sky
Administrateur
Avatar
Site perso
4157 posts
Inscrit le : 13/08/2003
Ben, bien sur smiley
Vais réfléchir àa ça, mais, déjà, je doit comprendre comment décoder une image qui est en base 64 ...
J\'y suis presque ;)

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 17:19
3run0
Administrateur
Avatar
1759 posts
Inscrit le : 1/10/2004
http://www.nexen.net/docs/php/annotee/function.base64-decode.php?lien=decode
Dans mon fichier bookmarks le lien vers les favicon sont pas codé.

_______________________
_ww.gabian-herault.com
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 17:37
sky
Administrateur
Avatar
Site perso
4157 posts
Inscrit le : 13/08/2003
haaa, tu me fais peur là ...
J\'ai réussi la création des en base 64 ... je vais bien réussir à faire un test de plus ^^

Poste un fichier exemple d\'une exportation ie ou autre...

Sky

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 17:45
sky
Administrateur
Avatar
Site perso
4157 posts
Inscrit le : 13/08/2003
J\'ai fais un test avec le fichier exporté de IE, y\'a même pas les favicon écrit qqpart ...

Tu utilise quoi?

Envoi un exmeple de page exporté stp.

Sky

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 17:51
sky
Administrateur
Avatar
Site perso
4157 posts
Inscrit le : 13/08/2003
Bref, voici le nouveau code, qui ne prend pas en compte les favicons non base 64 :
<?php
function cleanurl($var){
  
$var=strtolower($var);
  
$var=str_replace(" \",\"-\",$var);
  $var=str_replace(\"--\",\"-\",$var);
  $var=eregi_replace(\"[^a-z0-9\\-]\",\"\",$var);
  return $var;
}

function base64_to_jpeg( $inputfile, $outputfile ) {
  $fp = fopen(\'icons/\'.$outputfile, \"wb\" );
  fwrite( $fp, base64_decode( $inputfile ) );
  fclose( $fp );

  return( $outputfile );
}

function link_extract($str)
{
    preg_match(\"(<A HREF=\\\"(.*)\\\"+>(.*)</A>)\", $str, $out, PREG_OFFSET_CAPTURE);    
    return($out);
}
function sort_array($temp) {
  foreach($temp as $num => $texte){
    $texte=str_replace(\' \', \'\', $texte); $texte=str_replace(\'=\', \'\', $texte);
    $newtemp[$texte]=$temp[($num+1)];
  }
  return $newtemp;
}
function change_date($mktimedate){
  $newdate=date(\"d-m-Y\", $mktimedate);
  return $newdate;
}


$tab=file(\'bookmarks.html\');
foreach($tab as $clef=>$valeur){

$valeur=str_replace(\"  \", \"\", $valeur);
$valeur=str_replace(\"\\n\", \"\", $valeur);

  if($valeur!=\"\"){

    if(eregi(\'<dl>\', $valeur)){
      echo \'<ul>\'.\"\\n\"; 
    }elseif(eregi(\'</dl>\', $valeur)){
      echo \'</ul>\'.\"\\n\\n\";
    }elseif(eregi(\'<dt>\', $valeur)){
    
    $pattern = \'|<[^>]+>(.*)</[^>]+>|U\';
    preg_match($pattern, $valeur, $out, PREG_OFFSET_CAPTURE, 3);  
     
    $link = link_extract($out[0][0]);
    
    $temp=split(\'\"\',$link[1][0]);
    $newtemp=sort_array($temp);

    
    if($link[2][0]!=\"\"){

      if(!empty($newtemp[\'ICON\']) AND !file_exists(\'icons/\'.cleanurl($temp[0]).\'.jpg\')){
        $newtemp[\'ICON\']=str_replace(\'data:image/x-icon;base64,\',\'\',$newtemp[\'ICON\']);
        base64_to_jpeg($newtemp[\'ICON\'], cleanurl($temp[0]).\'.jpg\');
      }
      if(file_exists(\'icons/\'.cleanurl($temp[0]).\'.jpg\')){
        $imageUrl=cleanurl($temp[0]).\'.jpg\';
      }else{
        $imageUrl=\'default.jpg\';
      }
      echo \'<li><img width=\"16\" src=\"icons/\'.$imageUrl.\'\" /> <a href=\"\'.htmlentities($temp[0], ENT_QUOTES).\' \" title=\"Ajout&eacute; le : \'.change_date($newtemp[\'ADD_DATE\']).\'\">\'.htmlentities($link[2][0], ENT_QUOTES).\'</a></li>\'.\"\\n\";
    }else{
      echo \'<li><b>\'.htmlentities($out[1][0], ENT_QUOTES).\'</b></li>\'.\"\\n\";
    }

    }
    
  }

}
?>
  



_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 18:01
3run0
Administrateur
Avatar
1759 posts
Inscrit le : 1/10/2004
le debut de la page bookmarks.html de la suite mozilla:


<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
     It will be read and overwritten.
     DO NOT EDIT! -->
<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>

<DL><p>
    <DT><H3 ADD_DATE=\"961112773\" LAST_MODIFIED=\"1111737763\" PERSONAL_TOOLBAR_FOLDER=\"true\" ID=\"NC:PersonalToolbarFolder\">Barre Person nelle</H3>
    <DL><p>
        <DT><A HREF=\"http://www.mozilla.org/\" ADD_DATE=\"961099870\" LAST_VISIT=\"1122810587\" LAST_MODIFIED=\"1028734564\"&nbs p;ICON=\"http://www.mozilla.org/images/mozilla-16.png\" LAST_CHARSET=\"UTF-8\" ID=\"rdf:#$vf3Cl1\">Le site Mozilla</A>
        <DT><A HREF=\"http://frenchmozilla.sourceforge.net/\" ADD_DATE=\"1028728427\" LAST_VISIT=\"1122810530\" LAST_MODIFIED=\"1 028734556\" ICON=\"http://frenchmozilla.sourceforge.net/images/webicon.png\" LAST_CHARSET=\"ISO-8859-1\" ID=\"rdf:#$wf3Cl1\">Mozilla en français</A>
        <DT><A HREF=\"http://c.asselin.free.fr/french/moteurs.htm\" ADD_DATE=\"1111737717\" LAST_VISIT=\"1123853246\" LAST_CHARSE T=\"ISO-8859-1\" ID=\"rdf:#$DQv+k\">Moteurs de recherche français et internationaux</A>
        <DT><A HREF=\"http://www.msn.com/\" ADD_DATE=\"1117754424\" LAST_VISIT=\"1123919226\" LAST_CHARSET=\"UTF-8\" ID=\"rd f:#$kOqjm3\">Welcome to MSN.com</A>
        <DT><A HREF=\"http://www.system-tic.net/orb/index.php\" ADD_DATE=\"1117923251\" LAST_VISIT=\"1118000158\" LAST_CHARSET=\" ISO-8859-1\" ID=\"rdf:#$R7wam\">Votre villa en pierre dans le Languedoc (Hérault)</A>
    </DL><p>
    <HR>



_______________________
_ww.gabian-herault.com
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 18:18
sky
Administrateur
Avatar
Site perso
4157 posts
Inscrit le : 13/08/2003
Bon, faut que je test pour voir si l\'icone est encoder ou non ...

ps : j\'ai résolue les problèmes des antislashe (\\) je crois smiley



_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Parser php de favoris web     Posté le 13/08/2005 à 18:33
sky
Administrateur
Avatar
Site perso
4157 posts
Inscrit le : 13/08/2003
3run0, tu vient de me faire voir le plus gros pb ...
Comment tester qu\'une chaine est bien conforme base64 ?

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Pages : [1] 2
Vous n'est pas connecté en temps que membre, parceque j'en ai marre du spam, SEUL les membres peuvent poster des messages sur le forum.

Nous  -  Plan du site  -  Informations légale  -  Contact  -  © Graphiks.net