rechercher des mots avec leurs balises

rechercher des mots avec leurs balises - PHP - Programmation

Marsh Posté le 04-11-2009 à 10:53:44    

Bonjour,
 
Comment peut-on après avoir ceci:
 
$lines = file('http://annuaire.indexweb.info/');
 
Puis chercher là-dedans une expression précise par exemple "proposer un site" ainsi que les balises qui l'entourent, je sais pas si la fonction ereg permet de faire cela.

Reply

Marsh Posté le 04-11-2009 à 10:53:44   

Reply

Marsh Posté le 04-11-2009 à 10:57:34    

daniela1 a écrit :

Bonjour,
 
Comment peut-on après avoir ceci:
 
$lines = file('http://annuaire.indexweb.info/');
 
Puis chercher là-dedans une expression précise par exemple "proposer un site" ainsi que les balises qui l'entourent, je sais pas si la fonction ereg permet de faire cela.


 
 
fait un fopen
puis "aspire le site" avec un fgets dans une variable  
et ensuite tu peux faire des eregs

Reply

Marsh Posté le 04-11-2009 à 11:06:50    

oula partons dans les vieux truc,
 
pour ouvrir et lire un fichier t'as plus simple : file_get_contents
 
niveau regexp, c'est plus conseiller d'utilisé "preg" qu'"ereg" ( plus rapide )
 
mais pour faire des recherches dans un document html (mieux xhtml)
c'est DomDocument, associé a Xpath et ca devrai allé (pour recherche du texte c'est contains()  )

Reply

Marsh Posté le 04-11-2009 à 11:18:22    

par exemple cette ligne ne marche pas
 
$fp = fopen("http://localhost/repertoire/admin/","r+" ); //lecture du fichier,  
c'est normal j'ai easyphp 3.0

Reply

Marsh Posté le 04-11-2009 à 11:18:45    

?

Reply

Marsh Posté le 04-11-2009 à 11:30:41    

utilise file_gets_content comme je t'ai dis

 

sinon pour ta recherche tu peux faire ca :

 

<?php
    $search = 'test';
   
    $doc = new DomDocument();
    $doc->loadHTMLFile('http://localhost/');
   
    $xpath = new DOMXPath($doc);
    $items = $xpath->query("//*[contains(child::text(), '$search')]" );
   
    foreach($items as $item)
    {
        var_dump($item->tagName);
    }

 


et ca commence a dater easey php 3.0 non ?, installe la derniere version si c'est possible, ou install zend server


Message édité par stealth35 le 04-11-2009 à 11:40:15
Reply

Marsh Posté le 04-11-2009 à 11:55:47    

vous pourriez m'expliquer :
 
query("//*[contains(., '$search')]/text()" );  ?
 si par exemple à la place de 'test' je veux "Proposer un site" et "Soumettre un site" ?

Reply

Marsh Posté le 04-11-2009 à 12:39:24    

comment transposer ce code, je suis hypernovice en programmation, pour rechercher deux expressions dans un texte l'"expression1" et l'"expression2" dois-je mettre  
query("//*[contains(child::text(), '$search')]" ) tel quel, ici search ne vaut qu'une expression.

Reply

Marsh Posté le 04-11-2009 à 13:10:39    

$search1 = 'test';
$search2 = 'test2';
 
"//*[contains(child::text(), '$search1') or contains(child::text(), '$search2')]"

Reply

Marsh Posté le 04-11-2009 à 13:15:12    

daniela1 a écrit :

vous pourriez m'expliquer :
 
query("//*[contains(., '$search')]/text()" );  ?


 
 
donc c'est xpath
 
//* : va chercher tout les noeuds
 
ensuite
 
[contains(child::text(), '$search1')]
 
dans tout les noeuds on va recuperer tout ceux, dont l'enfant texte contient la chaine $search
 
mais bon c'est deja du xpath avancé
 
un truc simple recupere tout les liens serai : //a
 
je t'invite a fair un petit tour ici
 
http://fr.wikipedia.org/wiki/XPath

Reply

Marsh Posté le 04-11-2009 à 13:15:12   

Reply

Marsh Posté le 04-11-2009 à 13:55:56    

A noter que les fonctions ereg eregi, etc sont dépréciées et seront supprimées en php6.
Il faut utiliser les fonctions preg_match et co...
 
Gat$

Reply

Marsh Posté le 04-11-2009 à 14:01:35    

j'ai trouvé une autre façon avec
<html>
<head>
<script language= "javascript">
function la(url){
  var i;
  var Win;
  var Html="";
  var Obj;
 
  //--  Tu ouvres le document avec window.open
  Win= window.open( "url","le" );
 
  Obj =win.document.getElementsByTagName('a');
 
  for ( i=0; i < Obj.length; i++){
    Html += Obj[i].innerHTML;
  }
  alert(Html);
}
</script>
</head>
<body>
<a href="javascript:la(http://www.aquadesign.be/)"> Ouverture</a>
</body>
</html>
 
pour le site spécifié bon par exemple, et voir ce qui ne va pas

Reply

Marsh Posté le 04-11-2009 à 14:05:23    

mais enfaite tu veux faire quoi exactement ?

Reply

Marsh Posté le 04-11-2009 à 14:09:30    

en fait je voudrais c'est vrai c'est pas terrible m'inscrire automatiquement à quelques formulaires pour m'éviter de m'inscrire manuellement long et répétitif. Souvent dans les pages des annuaires de sites, il y a un liens  
"proposer un site", je voudrai le récupérer et faire en sorte si c'est possible qu'il soit cliqué pour accéder à la deuxième page( en fait je sais pas trop comment m'y prendre.

Reply

Marsh Posté le 04-11-2009 à 14:13:52    

je vois, mais malheureusement, les champs n'ont pas tous le meme nom
 
par ex pour un champ "votre site" le nom du champ va etre :
site
web-site
link
....
 
et ca tu peu pas le savoir par avance
 
t'as des extention pour IE ou Firefox,  qui te rempli les formulaire automatiquement, mais c'est pareil c'est une liste exhaustive des noms.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed