expressions régulières

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : expressions régulières

Re: expressions régulières

par dnnwm » 09 juin 2010, 23:33

Je pense que ton problème initial avec la regex était l'absence du "?" après l'"*" :

Code : Tout sélectionner

preg_match_all( "/<div id=\"myID\">(.*?)<\/div>/U", $mapage, $match );
Cela permet de récupérer tous les caractères sauf s'il rencontre la suite de ton motif auquel cas il s'arrête.

Re: expressions régulières

par Progman » 07 juin 2010, 15:57

éh bein mon pote, t'est trop fort lol
je te remerci beaucoup, ya rien a dire, tes reponses étaient parafaites. :wink:
je te souhait plein de bonheur, comme celui que tu ma donnée :D

Re: expressions régulières

par stealth35 » 07 juin 2010, 14:19

direct avec loadHTML :wink:

Re: expressions régulières

par Progman » 07 juin 2010, 14:14

Désolé de me pointé encore une fois, mais j'ai une derniere question :roll: .
Comment je fait pour utiliser query("//div[@id='myid']"); apartir d'une chaine de carctere pas d'un fichier html externe..
voici mon code de test et qui ne marche pas :P
$dom = new DOMDocument('1.0', 'utf-8');
$element = $dom->createElement('html', '<div id="myid">Juste une test</div>');
$element = $dom->appendChild($element);
$doc= $dom->saveHTML();
$xpath = new DOMXpath($dom);
$elements = $xpath->query("//div[@id='myid']");

echo  $elements ->nodeValue ;
sa doit etre une vrai cata :oops: , mais j'ai pas d'autre idées, et je ne veut pas vraiment creer la page avec createElement, car ma page existe deja sous forme de chaine de caratere, et je veut juste faire ma recherche de div la dessous.
THX.

Re: expressions régulières

par progman » 07 juin 2010, 12:52

Aaahh..c'est bon, j'ai trouvé :D
c'est tout bete lol :

au lieu de: $xpath->query("*/div[@id='id2']"); on fait $xpath->query("//div[@id='id2']");

merci infiniment stealth35, ton aide été precieuse.
passe une bonne journée.

Re: expressions régulières

par Progman » 07 juin 2010, 12:34

Merci, les erreurs sont parti #-o
bon, mon test est le suivant:
$elements = $xpath->query("*/div[@id='id2']");
foreach ($elements as $element) { 
 echo  $element->nodeValue . "<br />\n";
}
le code fonctionne pour une structure :

Code : Tout sélectionner

<div id="id1">mon premier div </div> <div id="id2">mon second div</div>
mais pas pour:

Code : Tout sélectionner

<div id="id1"> mon premier div <div id="id2">mon second div</div> </div>
une suggestion :?:
Merci encore pour ton aide.

Re: expressions régulières

par stealth35 » 07 juin 2010, 11:49

tu peux utiiliser libxml_use_internal_errors

Re: expressions régulières

par Progman » 07 juin 2010, 11:46

bon j'ai fait un pti test :
$doc = new DomDocument();
$doc->loadHTMLFile('page.html');
il me sort un tas d'erreurs du genre:

Warning: DOMDocument::loadHTMLFile() [domdocument.loadhtmlfile]: Unexpected end tag : meta in page.html, line: 5 in test.php on line 32

Warning: DOMDocument::loadHTMLFile() [domdocument.loadhtmlfile]: htmlParseEntityRef: expecting ';' in page.html, line: 203 in test.php on line 32


il me semble que l'erreur vient du fichier html charger, mais lui je ne peut pas le touché ... ya t il une solution !?

Re: expressions régulières

par stealth35 » 07 juin 2010, 11:08

Oula ça m'a l'air bien compliquer tout sa ... :?
Je vais voir si j'y arrive
Merci pour cette reponse rapide, mais si ya plus simple je suis preneur :P
t'inquete pas c'est super simple (4 lignes)

pour la requête ca devrais ressembler a ca : //div[@id="myID"]

Re: expressions régulières

par Progman » 07 juin 2010, 11:07

Oula ça m'a l'air bien compliquer tout sa ... :?
Je vais voir si j'y arrive
Merci pour cette reponse rapide, mais si ya plus simple je suis preneur :P

Re: expressions régulières

par stealth35 » 07 juin 2010, 10:59

hello, les regexp n'etant pas fais pour parser du html je e conseil d'allé voir du coté de DomDocument, couplé a Xpath pour ta requête :wink:

expressions régulières

par Progman » 07 juin 2010, 10:56

salut a tous,
je voudrai extraire d'une page web tous les div qui ont un id="myID"
voila ce que j'ai tenté sans succés:
preg_match_all( "/<div id=\"myID\">(.*)<\/div>/U", $mapage, $match );
Merci.