Regex pour frimousse.org

Résolu
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008 - 16 mars 2005 à 08:30
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008 - 19 mars 2005 à 15:34
bonjours, j'ai déjà laisser un topic sur le sujet dans las BDD mais je pense que la rubrique "au secours!!" est plus apropriée...
j'aimerai récuperer les infos contenue dans cette page http://www.frimousse.org/dslam?vue=tout. J'ai réussi a ouvrir, lire ligne par ligne et fermer la page mais il me manque une regex pour séparer chaque infos dans la liste, de plus, au stade actuel, lorsque je demande le contenu de la variable stockant toutes les lignes il m'affiche en intégralité le texte de la pages sur laquelle je travail, donc il va falloir séparer la liste du reste.

merci de votre aide

8 réponses

cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
18 mars 2005 à 07:17
Tu dis être parvenu à séparer chaque ligne. C'est déja un bon point !

Ensuite, chaque ligne se compose comme ceci :



<tr><td>[4aa54-1 4aa54-1]</td>
<td>[dslam?vue= tout&amp;nra=4AA54 4AA54]</td>
<td>213.228.13.24</td> <td>[dslam?vue=tout&amp;groupe=718 nancy]</td>
<td>82.234.148.0/23, 82.234.150.0/23</td>

suivi des codes correspondants aux carrés verts etc...



Perso, je m'y connais très peu en php, mais niveau regex je construirais ca comme ca :



function frimousse($a) {

echo "$a
";

$pattern "!.* ([^<]+) .*nra([^"]+?).*?<td>(.+)</td>.*groupe=[^>]*>(.+).*<td>([^<]+?)!Ui";

if (preg_match($pattern,$a,$matches)) {

$array = array(

"nom" => $matches[1],

"nra" => $matches[2],

"ip" => $matches[3],

"groupe" => $matches[4],

"pool" => $matches[5]

);

echo "
MATCHES
";

print_r(array_keys($array));

echo "
";

print_r(array_values($array));

}

}



ou un truc dans le genre... j'ai pas du tout l'habitude d'écrire des
trucs a la volée en php, donc ya peut être des erreurs de syntaxe. Cela
dit ca semble marcher chez moi quand je prends le code html concernant
une seule ligne, essaie ensuite d'adapter ;-)

j'ai pas géré de html_entities, qui doit mettre le bazar dans la regex
... a voir, mais c'est pas nécessaire peut être pour les données d'un
site :/



PaDa
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 mars 2005 à 12:55
Salut,



tu veux séparer quoi précisément pour chaque ligne, si tu nous disais ce que tu veux récupérer précisément ça nous aiderait...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008
16 mars 2005 à 13:38
il me faut une regex pour séparer tt les les infos de la liste (nom, NRA, groupe, pool et IP) et aussi il faut qu'elle enleve le texte du haut et du bas (avec la légende), je veux récupérer seulement la liste dans un array avec toutes les infos séparées.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 mars 2005 à 14:50
Ok je regarde ça ce soir si j'ai le temps :-)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008
16 mars 2005 à 14:54
okay et merci pour ton aide!!
0
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008
18 mars 2005 à 17:40
ben ecoute, tout d'abors un tres grand merci!!! car malgré de certaines mofications ca marche et du tonnerre!!!! toutesfois j'ai une question, comment récupérer les textes en italiques dans la liste car j'ai essayer un truc comme ca "|" mais ca ne marche pas... cela se situe au niveau de la selection du nom au debut.
mai merci encore car tu est le seul qui m'ai donné un code comme ca!!!!
0
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
18 mars 2005 à 17:59
Regarde entre quoi et quoi est situé ton texte, c'est la base pour l'extraire.

S'il est situé entre et , tu peux l'extraire avec un masque comme ca :

(.*), a modifier au cas par cas, je vois
pas exactement ou ya du texte en italique dans l'histoire la lol

PaDa
0
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008
19 mars 2005 à 15:34
ben coute, tu regarde dans la liste des DSLAM et tu vois que certains sont en dit "en test" c'est a dire qu'ils aparaissent en italiques, pas en gras et entre parenthese. Et moi je veus récupérer la liste de TOUT les DSLAM ceux en italique et ceux entre ls balises .
mais encore merci c'est deja bien voire tres bien!!!!!!
0
Rejoignez-nous