Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1204 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  mot dans une chaine

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mot dans une chaine

n°1032008
Badze
Aime les frites
Posté le 01-04-2005 à 00:49:06  profilanswer
 

Bonsoir a vous,
 
Je voudrai compter le nombre de fois qu'un mot est utilisé dans une chaine et cela me donnera une valeur (ex= 23).
Je cherche cette fonction depuis toute la soirée, impossible de la decroché, ce serai apparement une expression réguliere  :??: ,  
 
Merci

mood
Publicité
Posté le 01-04-2005 à 00:49:06  profilanswer
 

n°1032011
KangOl
Profil : pointeur
Posté le 01-04-2005 à 00:51:14  profilanswer
 

http://be2.php.net/substr-count


---------------
Nos estans firs di nosse pitite patreye...
n°1032016
Badze
Aime les frites
Posté le 01-04-2005 à 01:02:37  profilanswer
 

merci impeccable ;)

n°1033509
Badze
Aime les frites
Posté le 03-04-2005 à 12:03:19  profilanswer
 

Rebonjours, voila jai un autre soucis avec ces satané chaines.
En fait je voudrai recupéré plussieurs valeurs dans un code source
 
voici deja une parti de la source
-----
<td><nobr>Framboisier&nbsp;</nobr></td>
<td><nobr>Cavalerie&nbsp;</nobr><td><nobr>Sergent Chef&nbsp;</nobr><td><nobr><a href="../perso/evt_perso.php?id_perso=960" target="_blank">960</a></nobr></td></td>
</tr>
<tr>
 
<td><nobr>Minet&nbsp;</nobr></td>
<td><nobr>Infanterie&nbsp;</nobr><td><nobr>Grouillot 1° classe&nbsp;</nobr><td><nobr><a href="../perso/evt_perso.php?id_perso=961" target="_blank">961</a></nobr></td></td>
</tr>
 
---------
en fait je voudrai recupéré la valeur "sergent chef" et le numéro 960 dans la premiere ligne de code
 
Apres je voudrai recupéré "Grouillot 1° classe" et le numéro 961
 
comme vous pouvez le constaté, mes récupérations de valeur sont linéaires dans le code,
donc moi je voudrai recupéré ces valeur de facon automatique sachant quil peu avoir 30 ligne de code comme cela.
 
Je suis un peu pommé a vrai dire, donc si vous pouviez maider 2 petite seconde sur cela, ce serai assez sympa.
Et si vous aviez un site d'expression reguliere en php en francais, ce serait de meme.  
 
MERCI

n°1034098
cesarr89
Posté le 04-04-2005 à 10:54:37  profilanswer
 

J'ai eu le même problème, je devais parser un fichier HTML comme toi (c'étais sous VB.NET), et euh en faite...j'en ai trop chié, j'ai du utiliser les expressions réguliéres, et surtout beaucoup mais alors beaucoup de Bidouillages.  
Mais bon la ton code est plus simple, donc tu récupére ce que y'a entres les <tr>et</tr> puis dans ce que tu viens de récupérer, tu reprends ce qu'il ya entre les balises <nobr> et </nobr>.
Voila, j'espere que ca pourras t'aider.

n°1034119
cesarr89
Posté le 04-04-2005 à 11:23:34  profilanswer
 

Bah si y'a des parsers en PHP, tu connais SimpleXML ou DOM?on dirait pas.Avant de demander si y'a des parsers en PHP regarde la doc de PHP,ca évite de poser des questions cons.
Comment ca mon site?ce que je devais parser tu veux dire?c'était l'agenda de Yahoo!.

n°1034124
cesarr89
Posté le 04-04-2005 à 11:33:07  profilanswer
 

Ecoute, quelque soit la personne en face, je comprends pas pourquoi je dvrais m'exprimer comme j'en ai envie.
Si t'es quelqu'un de si 'haut' que tu le prétends, je pense que t'aurais fait un tour dans la DOC avant de venir poser une question ici,non?
Je suis d'accord pour le ton,je m'en excuse, mais ca me paraissait logique le coup de la Doc.

n°1034135
cesarr89
Posté le 04-04-2005 à 11:40:34  profilanswer
 

Ah mais merde, excuse moi ese-aSH, je t'ai confondu avec le mec qui postait. J'ai juste la réponse, pas fais gaffe au nom.
Je suis vraiment désolé pour la confusion.
 
Lol le coup de la langue.
 
Oué c'est vrai que le coup des tableaux ca fou pas mal la merde.

n°1034254
Badze
Aime les frites
Posté le 04-04-2005 à 13:39:46  profilanswer
 

erf, je voulais pas qu'il y ai d'embrouille a cause des musclés :( .
J'ai fait un peu le tour de la doc php, et ce n'est vraiment pas evident de rechercher un truc que l'on ne connait pas.
 
Existe t'il une fonction qui permettrai de recupéré une chaine entre 2 balises comme <nobr></nobr>.
 
du genre $toto=array(chaine1,chaine2,....) qui recupére tout les chaines situé dans le code encardré par ces balises.


Message édité par Badze le 04-04-2005 à 13:40:23
n°1034276
soju
One shot !
Posté le 04-04-2005 à 14:01:33  profilanswer
 

Badze a écrit :

J'ai fait un peu le tour de la doc php, et ce n'est vraiment pas evident de rechercher un truc que l'on ne connait pas.


je te conseille vivement de consulter la doc des regexp : http://fr.php.net/manual/fr/ref.pcre.php
pas évident au début mais ça vaut le coup.
 
sinon pour t'aiguiller voici un exemple simple :

Code :
  1. $test = '<td><nobr>Cavalerie&nbsp;</nobr><td><nobr>Sergent Chef&nbsp;</nobr><td><nobr><a href="../perso/evt_perso.php?id_perso=960" target="_blank">960</a></nobr></td></td>';
  2. if (preg_match('#<td><nobr>Cavalerie&nbsp;</nobr><td><nobr>(.*)&nbsp;</nobr><td><nobr><a href="\.\./perso/evt_perso.php\?id_perso=([0-9]*)" target="_blank">#i', $test, $match))
  3. {
  4. echo $match[1].', '.$match[2];
  5. }


mood
Publicité
Posté le 04-04-2005 à 14:01:33  profilanswer
 

n°1034304
Badze
Aime les frites
Posté le 04-04-2005 à 14:15:13  profilanswer
 

Tout simplement exellent, une tres bonne piste, maintenant je n'ai plus qu'a faire de modification et tout ira pour le mieux.
 
Merci beaucoup ;)

n°1034338
Badze
Aime les frites
Posté le 04-04-2005 à 14:37:59  profilanswer
 

me revoila pour de nouvelles avantures, ne vous inquiété pas, ce n'est rien de sorcié.
 
Peut ton savoir le nombre de valeur qu'un array possede sans passé par un boucle ?
Je voudrai optimisé a fond, donc pourquoi s'emcombrer si l'on peut faire mieux.
 
Merci

n°1034358
soju
One shot !
Posté le 04-04-2005 à 15:00:58  profilanswer
 

http://fr.php.net/count
 
telecharges la doc php au format chm, ca sera plus rapide que de demander ici  ;)

n°1034483
Badze
Aime les frites
Posté le 04-04-2005 à 16:29:23  profilanswer
 

Je veins de tester et c'est tout a fait bizarre, je n'est aucune sortie.
 
<?
$text=htmlspecialchars(file_get_contents("http://nord-versus-sud.com/classement/detail_compagnie.php?id_cie_info=65" ));
 
 if (preg_match('#<nobr>(.*)&nbsp;</nobr>#i', $text, $match)) // il y a une texte "<nobr>Sergent Chef&nbsp;</nobr>"
 {
         echo $match[1];
    }
?>
 
ce script sort le code source d'une page, et je voudrai sortir toute les chaines qui se situe entre <nobr></nobr>

n°1034542
soju
One shot !
Posté le 04-04-2005 à 17:10:32  profilanswer
 

normal, tu as mis un htmlspecialchars, donc <nobr> se transforme en &lt;nobr&gt;

n°1034563
Badze
Aime les frites
Posté le 04-04-2005 à 17:19:54  profilanswer
 

Pourtant quand je affiche $text, je ne vois pas de modification du code source.
 
Si c'est le cas, que puis je mettre au lieu de htmlspecialchars sans qu'il y ai de changement de code.
 
edit: htmlentities me donne la meme chose, aucune sorti de valeur


Message édité par Badze le 04-04-2005 à 17:22:44
n°1034564
soju
One shot !
Posté le 04-04-2005 à 17:23:27  profilanswer
 

Badze a écrit :

Pourtant quand je affiche $text, je ne vois pas de modification du code source.


si si ça modifie tout le source, regarde la doc : http://fr.php.net/htmlspecialchars
et puis pourquoi utiliser htmlspecialchars ??

n°1034567
Xav_
The only one...
Posté le 04-04-2005 à 17:24:56  profilanswer
 

t'a combien de désultat retourné dans $match ???
 
paske si yen a qu'un dans ce cas là, et ben c'est plutot "$match[0]" que "$match[1]" qu'il faut afficher (le 1er index de ton tab c'est 0 et pas 1)...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°1034570
Badze
Aime les frites
Posté le 04-04-2005 à 17:25:50  profilanswer
 

il devrai y avoir plusieur valeur,
malgré la valeur du $match

n°1034572
soju
One shot !
Posté le 04-04-2005 à 17:28:18  profilanswer
 

Xav_ a écrit :

paske si yen a qu'un dans ce cas là, et ben c'est plutot "$match[0]" que "$match[1]" qu'il faut afficher (le 1er index de ton tab c'est 0 et pas 1)...


$match[0] va renvoyer le masque entier (avec les nobr) donc c'était bien $match[1]
 
par contre pour tout recupérer il faut utiliser preg_match_all
et je repete ma question : pourquoi utiliser htmlenities ou htmlspecialchars ??
 

n°1034580
Badze
Aime les frites
Posté le 04-04-2005 à 17:38:03  profilanswer
 

soju a écrit :


et je repete ma question : pourquoi utiliser htmlenities ou htmlspecialchars ??


 
Erf, je pensais tout simplement que voila  :??:  :??:  :??:  
Je ne sais pas de trop, sachant que je pouvais affiché $text, je ne voyai pas pourquoi cela modifirai mon code.
 
Tu a bel et bien raison, c'est inutile d'utilisé cette fonction;
 
en tout cas merci d'avoir passé du temps pour mon cas  :jap:  

n°1034601
Badze
Aime les frites
Posté le 04-04-2005 à 17:53:22  profilanswer
 

Bon cette fois ci c'est la fin des haricots, j'ai passé mon apres midi a faire ca,j'ai un mal de crane pas possible, mais rien a faire,
 
<?
$text=file_get_contents("http://nord-versus-sud.com/classement/detail_compagnie.php?id_cie_info=65" );
 
 if (preg_match('#<tr>
     <td><nobr>(.*)&nbsp;</nobr></td>
     <td><nobr>(.*)&nbsp;</nobr><td><nobr>(.*)&nbsp;</nobr><td><nobr><a href="\.\./perso/evt_perso.php\?id_perso=960" target="_blank">960</a></nobr></td></td>
     </tr>#i', $text, $match))
 {
         echo $match[1];
    }
?>  
 
Si on regarde le code source de la page que j'ai mis en lien ci dessus, on peu voir que la parti du code que j'ai mis se repete plusieur fois jusqu'en bas de la feuille.
 
Je n'arrive meme pas a sortir le premier resultat demander, et je voudrai que cela se face pour toute la page.
erf, je sens que ce projet va tomber a l'eau.
 
:'(

n°1035032
Badze
Aime les frites
Posté le 04-04-2005 à 22:57:25  profilanswer
 

Alors je viens de faire plein de test.
 
- il n'aime pas les espaces ou plutot les entrer, donc il ne veut pas du code que j'ai indiqué si dessus
 
- Si je prend une ligne de code seul, cela marche, mais il ne prendra que la premiere valeur sur laquel il va tomber.
 
Moi, je voudrai prendre toutes les valeurs de la page code qui se situe entre les memes balises.
 
Comme dans lexemple la
$text=  file_get_contents("http://nord-versus-sud.com/perso/cv_perso.php?id_perso=11053" );
 
if (preg_match('#<td class="texte_noir_bold_11">(.*)&nbsp;</td>#', $text, $match))
 {
 echo $match[1];
 }
 
Essayer par vous meme, vous verrez bien :)


Message édité par Badze le 04-04-2005 à 22:57:54
n°1035305
soju
One shot !
Posté le 05-04-2005 à 09:36:50  profilanswer
 

Badze a écrit :

- il n'aime pas les espaces ou plutot les entrer, donc il ne veut pas du code que j'ai indiqué si dessus

normal il y a des espaces en trop, regarde bien le source de la page que tu veux parser
 

Badze a écrit :

Moi, je voudrai prendre toutes les valeurs de la page code qui se situe entre les memes balises.

http://fr.php.net/preg_match_all  

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  mot dans une chaine

 

Sujets relatifs
probleme avec chaine contenant des "+"[batch]Parcourir une chaîne de caractère
ASP | Concaténation de chaine de caractere :fou:Supprimer une chaine de caractère ds plusieurs fichiers .txt
concatener chaine + entierSéparer une chaine de caractère [Résolu]
[algo] inverser les mots d'une chaine de characteresubstituer une chaine par une autre
[algo] toutes les permutations d'une chaine de charatereMySQL requête ciblée sur une chaine de caractère
Plus de sujets relatifs à : mot dans une chaine


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR