begin process at 2012 05 29 01:04:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Détection d'un nombre dans une chaine...


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

Détection d'un nombre dans une chaine...

lundi 10 mai 2010 à 09:15:28 | Détection d'un nombre dans une chaine...

hygieaa

Merci de tout coeur à ceux ou celles qui répondront à ce problème que je ne sais gérer en PHP. Mais très bien en d'autres languages.

En fait il s'agit dans un message HTML que j'appelle ' $msg ' de récupérer un nombre compris entre 0 et 10 000

Il s'agit donc d'une chaine à convertir en nombre et à tester pour une valeur > à 10 dans ce cas je fais une ' Action '

Voici le message HTML:
<font color=3333FF>Nb Pat:<font color=000000>1<br>
<font color=3333FF>Cour.att:<font color=

Les 'Font color' correspondent à des changements de couleur.

On remarque un saut de ligne'<br>'après l'indication de'Nb Pat:'

Qui donne ceci en affichage:
Nb Pat:1
Cour.att:0


Les mots immuables à détecter en position pour borner la recherche sont:

' Nb Pat: ' et: ' Cour.att: ' et on récupère ici le chiffre '1'

Je compte donc sur la gentillesse et les connaissances de certains d'entre vous....
merci par avance.

alain
lundi 10 mai 2010 à 17:44:39 | Re : Détection d'un nombre dans une chaine...

Morphinof

Je n'ai pas assez de temps pour tout te detailler mais je te donnes une piste :
preg_match('#(<font color=\w{6}>)\d*<br>#', $msg, $arr);
echo '<pre>';
print_r
(
$arr
);
echo '</pre>';

j'ai teste sa rapidement, ton chiffre est dans $arr[0];
lundi 10 mai 2010 à 18:50:20 | Re : Détection d'un nombre dans une chaine...

hygieaa

Bonsoir l'ami et merci d'avoir été rapide

Ta solution ne doit pas à priori fonctionner car dans d'autres langages, elle ne fonctionnerait pas.

En effet pour que cela fonctionne il faut détecter la position de:
Nb Pat: et de Cour.att:

c'est une condition obligatoire. de plus ce n'est pas un chiffre que j'attends en réponse mais un nombre variant de 0 à 10000.

Merci d'avoir répondu... alain
mardi 11 mai 2010 à 02:33:53 | Re : Détection d'un nombre dans une chaine...

devil_may_cry

salut avant que je ne poste ma solution je tiens a tinformer que malheureusement pour moi j'ai utiliser les fonctions pre oui je dit bien malheuresement puisque c'est une notion que je ne maitrise pas donc au lieu d'appeler sa une solution je la nomerai plutot bidouille bon voila ce que j'ai pus trouver pour toi
Code PHP :
function tafunction ($msg) {
   
   
   $tab = preg_split("#<font (.*?)+>#",$msg);

   $tabInfos = array();
   
   $tabInfos[$tab[1]] = intval($tab[2]);
   
   if (isset($tab[4]) && !empty($tab[4])) {
 	   $tabInfos[$tab[3]] = $tab[4];
   } else {
  	   $tabInfos[$tab[3]] = 0;
   }
 return $tabInfos;
}

explication:
cette fonction prend en parametre ton message et renvoi un tableau index par Nb pat: et Cour.att: voici un exemple
$msg = "<font color=3333FF>Nb Pat:<font color=000000>1<br>
<font color=3333FF>Cour.att:<font color=>"
//remarque j'ai ajouter ">" pour pouvoir recuperer la valeur de Cour.att
donc
$tab = tafunction($msg);
echo "la valeur de NB pat == ".$tab['Nb pat:'];
echo "la valeur de Cour.att == ".$tab['Cour.att'];
c'est tous bon en conseil je dirai plutot que si la solution te vas soumet la au membre qui ont plus d'experience que moi dans les expression reguliere pour qu'il l'ameliore
mais je voudrai savoir pourquoi la soluce de Morphinof ne te convient pas
mardi 11 mai 2010 à 08:28:12 | Re : Détection d'un nombre dans une chaine...

kohntark

Membre Club
Salut,

Ta solution ne doit pas à priori fonctionner car dans d'autres langages, elle ne fonctionnerait pas.


L'as tu seulement testée ??
Et puis c'est sur que si tu entres ça en VB ça ne risque pas de fonctionner hein.
Nous sommes en PHP, donc parlons de ce qui fonctionne en PHP

La solution proposée par Morphinof peut sembler fonctionner, sauf qu'il ne capture pas ce qu'il faut, et à l'affichage on n'y voit que du feu.

Si tu veux "blinder" avec tes conditions "obligatoires" tu peux peut être faire un truc du genre :

Code PHP :
<?php
$msg = '<font color=3333FF>Nb Pat:<font color=000000>1<br>

<font color=3333FF>Cour.att:<font color= ';


$reg = '`<font\scolor=\w{6}>Nb\sPat:<font\scolor=\w{6}>(.+)<br>\s*<font\scolor=\w{6}>Cour\.att:<font\scolor=`';

if (preg_match($reg, $msg, $arr)) {
    var_dump($arr);

    if (10 < $nb_pat = (int)str_replace(' ', '', $arr[1])) {
        //action
    } else {
       // pas d'action
    }
}
?>



Cordialement,


Kohntark -

mardi 11 mai 2010 à 08:48:34 | Re : Détection d'un nombre dans une chaine...

hygieaa

Bonjour,


Bien sur que je n'ai pas introduit un code source VB dans un PHP, !!!

Je ne l'ai pas testée pour la raison suivante..

Pour moi le premier code ne convient pas pour la raison tres simple qu'il ne tient pas compte de la position des 2 balises NB.Pat et Cour.att .

C'est la seule possibilité de récupérer le nombre en question. Par contre des <Font color> il y en a plein le message donc ceux ci ne peuvent servir de balise.

Le 2eme code que tu m'adresses devrait fonctionner, car il parait beaucoup plus soigné et en tous cas tient compte des positions de balise.. Je teste et te dit ce qu'il en est..

A+++ et merci........ALAIN
mardi 11 mai 2010 à 09:39:02 | Re : Détection d'un nombre dans une chaine...

Morphinof

C'etait le but en fait de ne pas tester ou ce trouvent NB.Pat et Cour.att car tu recherche le pattern suivant : une balise font suivie d'un chiffre variant entre 0 et 10 000 suivit d'un <br> et du coup sa marche :) sauf evidement si tu as d'autre patterns du meme type je me suis base sur le petit bout de code que tu nous as donne ^^ En gros pour arriver a faire ce que tu veux il faut utiliser preg_match et l'expression reguliere qui va bien pour faire ce que tu veux :)
mardi 11 mai 2010 à 09:45:23 | Re : Détection d'un nombre dans une chaine...

hygieaa

Re bonjour,

J'avais écrit ceci:

Les mots immuables à détecter en position pour borner la recherche sont:
' Nb Pat: ' et: ' Cour.att: ' et on récupère ici le chiffre '1'

Je savais de quoi je parlais..!! On ne pouvait faire autrement seulement peut etre aurait-il fallu que je m'explique plus clairement.. Excuses..

Pour ce qui est du code ci-dessus, il fonctionne à la perfection!!! Il ne me reste plus qu'à broder sur l'action et cela devrait aller, car c'est beaucoup plus simple...

Merci donc cher ami.. d'avoir perdu un peu de temps avec mon PHP
a Bientôt alain
mardi 11 mai 2010 à 11:11:04 | Re : Détection d'un nombre dans une chaine...

Morphinof

Bonne continuation :)


Cette discussion est classée dans : nombre, chaine, nb, color, pat


Répondre à ce message

Sujets en rapport avec ce message

Nombre de caractere dans une chaine ? [ par Joez ] Yop yopje veux compter le nombre de cartactere ( lettre, espace, symbole.. enfin tout) d'une chaine de caractereComment faire ?Merci Enlever tous les espaces d'une chaine [ par Teclis01 ] Et bien je crois que tout est dans le titre sauf que j ai utilisé str_replace avec " " mais les doubles espaces il m en enleve que un et 3 je suppose Nombre Octec Chaine Caractere [ par josh666 ] Bonjour a tous !Est-il possible de connaitre la taille (en octec) du contenu d'une variable, sachant que le contenu de la variable est une chaine de c compter le nombre de sous chaine dans une chaine [ par loupile ] Bonjour, alors voila j'ai une chaien $tag='http://www.monsite.com/test.php?url=http://www.monsite2.com/'  comment puis je connaitre le nombre de sous decoupe de chaine [ par atchoumen ] Bonjour,V'la je suis bloquer sur un problème  un peu débile donc je fais appel a vous. Voici le code : $nb_car = 900;  $montexte = $enregistrement->TE liens messagerie online [ par speedylol ] Bonjour voici le probléme que j ai , sur une messagerie online cela fonction bien quand je recois mon premier message le liens apparaît mes et j'aimer modifier chaine de caractère [ par zut69 ] <td id="HB_Focus_Element" unselectab="" background="" obtenir la position du premier nombre dans une chaine de caracteres [ par jsuisperdu ] bonjour,je cherche à caluler automatiquement la poisiton de la premiere valeur numérique dans un texte.exemple : "le chien de la voisine a mange 52 ch couper une chaine [ par zut69 ] Bonjour,J'ai un grand nombre sous une forme précise que je voudrais découper.Voici un nombre: 123456789et je voudrais faire une boucle qui mette dans calculer le poids d'un mot d'une chaine en php [ par hadjiphp ] Bonjour, merci pour ce site et souhaite de trouver tous ce que je veux. je vous remercie. Bonjour, j'ai une question : j'ai une chaine de caracté


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,733 sec (4)

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