Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Ajout fonctions à JHttp : getTitle etc...

Posted by Yoc on 10/08/2008 11:15

Bonjour, Tout d'abord bravo pour le taf que vous fournissez sur ce framework. Etant un peu boulzor en php, je trouve qu'il est un bon compromis entre fonctionnalités/compliquations.

Bref, revenons au sujet. Pour mon premier projet avec jelix, j'ai besoin de récupérer sur une page web le titre, les mots-clés et la description dans la balise head. Avec la classe JHttp, il est déjà possible de récupérer le html d'une page, il ne reste donc plus qu'à "parser" les tags html pour récupérer les infos. L'idéal serait donc que jHttp le fasse, qu'en pensez-vous ? On pourrait par exemple avoir des fonctions getTitle(), getDescription(), getKeywords()... ou une fonction getHead() qui renverrait un array. J'ai vu qu'il y avait un getHeaders(), mais si j'ai bien compris, cela récupère le header http, pas html...

Je vous avoue que j'ai essayé de modifier la classe jHttp en ajoutant cette fonction mais ça ne marche pas :

 private title;
 
 public function getTitle () {
     if (preg_match('/<title>(.*)<\/title>/i',$this->getContent(),$ar)) {
         $title = $ar[1];
     } else {
         $title = "pas de titre";
     }
     return $title;
 }

j'ai piqué le preg_match sur une class qui fait déjà ça et qui marche, donc l'erreur ne doit pas venir de là.

Mais en gros débutant que je suis j'ai du raté quelque chose. Peut-être à l'instenciation ?

 $http = new JHttp($url_site);
 $title = $http->getTitle();

  [Opened] Re: Ajout fonctions à JHttp : getTitle etc...

Reply #1 Posted by laurentj on 10/08/2008 13:57

Salut,

bienvenue sur Jelix :-)

L'idéal serait donc que jHttp le fasse, qu'en pensez-vous ?

non, jHttp, c'est chargé de faire une requête http, point. HTTP n'a aucun rapport avec HTML. Des méthodes de parsing de contenu HTML n'ont rien à faire sur un outil apportant le support HTTP.

Si tu veux parser HTML, tu as tout ce qu'il faut déjà dans PHP : DOM, parser sax etc...

Sinon, au niveau de la classe jHttp, n'aurais tu pas oublié d'executer la récupération du contenu ?

  [Opened] Re: Ajout fonctions à JHttp : getTitle etc...

Reply #2 Posted by Yoc on 10/08/2008 15:00

Ok, je comprends. Je vais donc me faire une class à moi pour ça.

Sinon, au niveau de la classe jHttp, n'aurais tu pas oublié d'executer la récupération du contenu ?

Tu veux dire avec $http->get($path); ?

J'ai essayé. Quand je fais :

 $pageweb = jHttp::QuickGet("http://jelix.org);

ça marche, mais quand je fais comme indiqué dans la doc :

 $http = new jHttp('http://jelix.org');
 $http->get('index.php');
 $pageweb = $http->getContent();

ça marche pas, j'ai une erreur

 [exception 0] Socket error: Unable to find the socket transport "http" - did you forget to enable it when you configured PHP? (1) /Library/WebServer/Documents/jelix1.1/lib/clearbricks/net/class.net.socket.php 120
 
Page
  1. Re: Ajout fonctions à JHttp : getTitle etc...