Traitement de données

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 : Traitement de données

par Ripat » 12 sept. 2006, 18:23

Voici une piste avec les regex.
$motif = '#Nom de la commune</h4><strong>(.*?)</strong>.*Vestiges préhistoriques et antiques.*<li>(.*?)</li>#s';


preg_match($motif, $txt, $captures);

unset($captures[0]);
echo '<pre>'; print_r($captures);

par Truc » 12 sept. 2006, 17:58

Non il n'y a pas de solution... trop de bidouillage pour le faire.

Faudrait relever la ligne comme tu le fait donc avec un test y inclure une lecture de ligne du fichier puis refaire une autre coupure avec substr().
Ou encore te débrouiller pour tout avoir sur une seule ligne comme pour les autres critères.

Ca ressemble à rien :?


Je suis pas non plus expert en matière d'expression régulières mais tu devrais vraiment te tourner vers cette solution sans perdre de temps avec celle-ci.

par stever » 12 sept. 2006, 12:34

Avant de refaire le script avec les regex je voulais savoir s'il y avait une solution a mon probleme, même si la méthoine n'est pas la meilleure.

Aller au bout pour bien comprendre et pouvoir par la suite mesurer les avantages et inconvéniants des deux méthodes.

par Truc » 12 sept. 2006, 11:14

Salut,
Pour la simple raison que tu lis le fichier ligne par ligne. Pour la région et la commune pas de soucis les repères et les libellés se trouvent sur le même ligne mais pas pour les "vestiges préhistoriques et antiques".

Ceci dit ce n'est certainement pas la bonne manière de faire... tu devrais te tourner vers les expression régulières.

Traitement de données

par stever » 12 sept. 2006, 11:09

Salut je bloque sur un petit script pour traiter le code suivant

Code : Tout sélectionner

<table> <tr> <td><h4>Nom de la commune</h4><strong>Lisle-en-Rigault</strong></td> <td><h4>Région</h4><a href="./regions.html?mode=detail&reg=57" title="fiche de la région">Lorraine</a></td> </tr> </table> <div class="donnees"> <h4>Généralités historiques</h4> <p><ul><li>Occupation préhistorique.</li> </ul></p> <h4>Vestiges préhistoriques et antiques</h4> <p><ul><li>Grottes dans la vallée du Boulou.</li> </ul></p>

Avec le script suivant j'arrive a récupérer comme info le "nom de la commune" mais pas les "Vestiges préhistoriques et antiques"
<?php
$fp = fopen("...", "r");

while (!feof($fp)) { 
        $ligne = fgetss($fp, 4096); 
                
if ( strstr($ligne,'Nom de la commune'))
{
$commune = substr(strstr($ligne,'Nom de la commune'),17) ;
}
				
if ( strstr($ligne,'Région'))
{
$region = substr(strstr($ligne,'Région'),6) ;
}

if ( strstr($ligne,'Vestiges préhistoriques et antiques'))
{
$vpa = substr(strstr($ligne,'Vestiges préhistoriques et antiques'),36) ;
}

}
?>
je ne comprend pas pourquoi cela fonctionne pour le nom de la commune et la région et non pour le reste ?