Aller au contenu

Recherche avec preg_match


Siol

Sujets conseillés

Bonjour,

Je doit resortir des données d'un fichier texte. Ce fichier comprend plusieurs statistiques au format "54%A" Qui s'ignifie 54% on marché avec A. Malheuresement il n'y a pas que sa sur le fichier txt mais aussi plusieurs commentaires.

Je voudrais pourvoir sortir de la page en ligne les données entre "%". Mais comment faire ?

Au final cela devrai donné "Insert "54%A" ... "Insert "12%B" ... "Insert "75%F" ... en boucle pour tout ceux du fichier txt.

Merci.

Cordialement.

Modifié par Siol
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

peux-tu donner un exemple concret (voir l'entier, mais utilise le BBCode CODEBOX du texte de ton fichier) s'il te plaît ?

La construction d'expressions régulières varie énormément en fonction des données qui entourent celles que tu souhaites extraire.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Donc, je voudrais resortir les expréssion qui entoure %. Exemple dans le texte : "bla 15%B blablabla blabla bla blabla 84%C blabla 14%H blablablabla blablabla 14%C ..."

Il faudrais que sa sorte : "Insert 15%B ..." "Insert 84%C ..." "Insert 14%H ..." "Insert 14%C ..."

Je me suis bien expliquer ?

Lien vers le commentaire
Partager sur d’autres sites

Cela donnerait quelque chose comme cela :

  $text = 'bla 15%B blablabla blabla bla blabla 84%Casd blabla 14%H blablablabla blablabla 14%C ...';
 $text = preg_match_all('/([0-9]{1,3}[^\s]+)\s/i',$text,$matches);
 print_r($matches);

$matches est un tableau que tu passe par référence à la fonction preg_match_all, il contient ensuite toutes les occurrences qui ont correspondu aux sous-masques (dans ce cas-là, il n'y en a qu'un, de sous-masque).

J'ai supposé que ton pourcentage ne dépassait pas 3 chiffres et qu'il en faisait au moins 1. Et que la partie après le pourcentage était tout sauf un espace... à toi de voir comment faire varier cette expression pour coller à tes besoins, j'ai fait des suppositions, mais ça devrait te mettre sur la route au moins.

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai pas précisé mais il a aussi infos en "unknow%D" ect. J'essaye de décortiquer tout sa là. Si vous avez un site ou c'est bien expliquer.

Merci pour les réponses.

Lien vers le commentaire
Partager sur d’autres sites

Franchement, donne-nous le fichier texte en entier (entre balises CODEBOX) qu'on puisse identifier les contraintes nous-mêmes, cela sera plus facile.

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Je croi que c'est bon. Dit moi ce que tu en pense :

$text = preg_match_all('/([a-zA-Z0-9._-]{1,25}+%[a-zA-Z0-9._-]+)\s/i',$text,$matches);

Alors ?

EDIT TheRec,Modérateur: Pour les codes courts, il est préférable d'utiliser la balise CODE ;) Désolé si je t'ai induit en erreur, mais je parlais de ton fichier texte lorsque j'évoquais la balise CODEBOX.

Modifié par TheRec
Lien vers le commentaire
Partager sur d’autres sites

J'en pense que du bien...si cela correspond à tes besoins :lol:

Comme je n'ai pas vu l'entier du fichier texte, je ne peux pas juger de l'efficacité de ce masque dans tous les cas de figures possibles.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...