begin process at 2012 05 31 14:19:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Un regex qui marche pas :(


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Un regex qui marche pas :(

jeudi 14 juin 2007 à 22:37:57 | Un regex qui marche pas :(

kangoo75

Bonjour , je suis un peut nul en Regex et j'ai bidouillé un script mais qui marche pas afin de récuperer la note , les commentaires positif et négatif , le nom et la date de chaque commentaire , voici mon code (pouvez vous m'aider?)
Merci

----------------------------------------------------------------
<?php


$texte=' <div class="commentaire">
Un commentaire :

<img src="note.png" /> 9

<div class="comments">

<span class="commentaireplus">+</span>
j\'adore la déco

<span class="commentairemoins">-</span>
Accueil pas agréable

</div>

<strong> Christine </strong>
Mere au foyer
France - 13 juin 2007
</div>


<div class="commentaire">
Un commentaire :

<img src="note.png" /> 7

<div class="comments">

<span class="commentaireplus">+</span>
j\'aime la télé

<span class="commentairemoins">-</span>
rien je trouve

</div>

<strong> Roger </strong>
Pere célibataire
France - 13 juin 2007
</div>';




preg_match_all("/<div class=\"commentaire\">{*}<img src=\"[^>]+\">{*}<div class=\"comments\"><span class=\"plus\">+<\/span>{*}<span class=\"plus\">-<\/span>{*}<\/div><strong>{*}<\/strong>{*}<\/div> /siU", $input, $matches, PREG_SET_ORDER);

print_r($matches);
vendredi 15 juin 2007 à 12:49:30 | Re : Un regex qui marche pas :(

DiGhan

Salut,

pour pouvoir capturer des données au sein d'une regex, il faut faire appel aux parenthèses capturantes (absentes dans ton masque). Par exemple :


<?php

$string = 'capturez-moi';
$pattern = '#([a-z]+)-([a-z]+)#i';
preg_match_all($pattern,$string,$matches,PREG_SET_ORDER);
echo '<pre>',print_r($matches),'</pre>';

?>
vendredi 15 juin 2007 à 16:16:46 | Re : Un regex qui marche pas :(

garfield90

Pourquoi faire une regex pour ca ?
normalement, logiquement, tu as stocké ces informations quelques part ( XML, BDD, autres) et la récupérer les infos se fait d'une maniere beaucoup plus triviale.

Sinon, si ton code est bien formé, ton HTML => XML, tu utilises alors le modele DOM ou SimpleXML pour récuperer les informations, cas relativement simple.

Enfin, si tu veux t'amuser avec les expressions rationnelles, regardes ton pattern et aussi des tutos, et tu verras une des raisons pour lesquelles ca marche pas.

Ensuite construit ta regex au fur et a mesure, ou fait en plusieurs (chacune récupérant l'information souhaitée)


"They are 10 sorts of persons those understanding binary and those not"
vendredi 15 juin 2007 à 17:31:42 | Re : Un regex qui marche pas :(

kangoo75

ok merci, j'ai reussi à bidouiller un truc qui marche :
preg_match_all('#<div class="commentaire">.*<img src="note.png" \/>(.*)<div class="comments">.*<span class="commentaireplus">\+<\/span>(.*)<span class="commentairemoins">-<\/span>(.*)<\/div>.*<strong>(.*)<\/strong>.*-(.*)<\/div>#misU', $texte, $matches, PREG_SET_ORDER);

Par contre lorsque par exemple       "  <span class="commentairemoins">-</span> Accueil pas agréable  " ou         " <span class="commentaireplus">+</span>   j\'adore la déco" est absent, le regex ne marche plus , comment faire pour résoudre ce probleme?

Note : je dois récuperer les infos d'une page web distante

Merci
vendredi 15 juin 2007 à 21:21:50 | Re : Un regex qui marche pas :(

DiGhan

Utilise la clause '?' qui indique une ou aucune fois la séquence qui précède. Exemple :

<?php

$pattern = '#(?:<span class="commentairemoins">-<\/span>(.*)<\/div>)?#';
preg_match_all($pattern,$string,$matches,PREG_SET_ORDER);

?>

NB : la séquence (?:...) indique qu'on ne souhaite pas capturer les données entre ces parenthèses.
vendredi 15 juin 2007 à 22:26:29 | Re : Un regex qui marche pas :(

kangoo75

alors la merci à tous ! ca marche nikel maintenant ! je met le regex final (ca peux servir à d'autre) :

preg_match_all('#<div class="commentaire">.*<img src="note.png" \/>(.*)<div class="comments">.*(?:<span class="commentaireplus">\+<\/span>(.*))?(?:<span class="commentairemoins">-<\/span>(.*))?<\/div>.*<strong>(.*)<\/strong>.*-(.*)<\/div>#misU', $texte, $matches, PREG_SET_ORDER);



Cette discussion est classée dans : marche, regex, juin, commentaire, france


Répondre à ce message

Sujets en rapport avec ce message

mon simple script ca marche pas! [ par anfakhaled ] slt, tout le monde ,j'as un problem sur mon code mysql ,ca marche pas j'essayer plusieur fois, aider moi svp! voila mon script : <!DOCTYPE html PUB regex [ par nbpro ] g un problème avec "a-z un espace suivit de deux point""[a-z]+\s\:" la chaine qui paré simple marche pas avec les ":" mai ds se sens la sa marche "[: MON WAMPSERVER NE MARCHE PAS ! [ par tmsarts ] Salut t.m J'ai installer le WAMPSERVEUR sur mon S.E Windows 7, ce dernier il est en orange et m'indique qu'il est on ligne, mais quand je veu accédé a jpgraph ne permet passage variable en URL avec GET !!!!!!!!! [ par midoxe ] Bonjour, je rencontre un problème qui me fait chier :p, je travail avec jpgraph pour générer des histogramme ça marche Nikel, donc j'ai essayer de re php [ par soukaouta ] bonjour tout le monde, j'ai essaye de faire un blog avec des commentaires en utilisant PHP5,tout se passe bien,l'ajout des message,l'affichage,l'ajout Test tout simple mais qui marche pas [ par MEGATRIX ] Salut je suis débutant en php et mon code n'affiche rien pouvez vous m'aider? merci "> WampServer2.2a-x32 NE MARCHE PAS ! [ par tmsarts ] Salut, Je travail sous Win7, j'ai installé WampServer2.2a-x32 mais il est en offligne et ne marche plus !! est ce qu'il ya une solution please; merci plugin [ par elmatadormoroco ] slt svp comment relier plugin commentaire de facebook a la base de donnée wordpress pour ke a chque fois un commentraire et ajouter donne ma page auto Condition php [ par phoenixgreg ] Bonsoir all ! Besoin d'un petit coup de main pour une simple condition en php. Je fais un blog et j'aimerai, quand un article ne comporte pas de com


Nos sponsors


Sondage...

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

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