Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/01/2007, 03h27   #1
Membre à l'essai
 
Avatar de Dirty Harry
 
Inscription : novembre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 111
Points : 24
Points : 24
Par défaut Opération sur un Texte

Hé Hé Bonjour,

J'ai un texte ou je dois exécuter une action à chaque fois que je rencontre un certain mot.
Exemple: à chaque fois que je croise le mot ordinateur dans un texte, j'incrémente un compteur.

Je réussi, mais seulement pour le premier mot rencontré et mon script s'arrête à cet instant.

Quelqu'un peut il me donner une piste ?

Merci
Dirty Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 09h19   #2
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Oui bien sur....
A condition que tu donnes le bout de code qui va avec parce que là c'est très obscur comme concept...

Mais bon... A mon avis tu dois avoir un modele de recherche pour expression régulière. Jette un oeuil ici ( en regardant bien le menu de gauche et en lisant le tout) :

http://fr3.php.net/manual/fr/referen....modifiers.php

Ou alors poste nous le bout de code

@+
cadou
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 11h02   #3
naz
Futur Membre du Club
 
Inscription : mai 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 21
Points : 18
Points : 18
substr_count -- Compte le nombre d'occurrences de segments dans une chaîne

http://fr3.php.net/manual/fr/function.substr-count.php
naz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 12h24   #4
Membre à l'essai
 
Avatar de Dirty Harry
 
Inscription : novembre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 111
Points : 24
Points : 24
En faite, ce que je veux faire isoler une partie d'un texte à la rencontre d'un mot.

Exemple:

lorsque je rencontre le mot ordinateur, je veux isoler (mettre dans une variable ou autre) tout le texte qui suit jusqu'à l'autre occurence du mot ordinateur ou je ferais la même chose jusqu'à la fin de mon texte.

je suis un peu dérouté

Merci
Dirty Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 13h23   #5
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

La solution est dans le lien que je t'ai donné plus haut. La fonction a utiliser est preg_match_all

exemple :

Code :
1
2
3
4
 
preg_match_all('/ordinateur(.*)ordinateur/i', $montexte, $data, PREG_SET_ORDER);
 
echo $data[0];
En gros $montexte c'est tout ton texte, il va te remonter tout ce qu'il trouve entre les mots ordinateur et te le stocker dans le tableau $data.

Pour plus d'infos, regarde le lien que je t'ai mis plus haut

@+
cadou
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 16h33   #6
Membre à l'essai
 
Avatar de Dirty Harry
 
Inscription : novembre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 111
Points : 24
Points : 24
Je ne suis pas sûr de comprendre coudal56. apres avoir fait un test, je constate que cette facon me renvoie sous forme de tableaux toutes les occurence de l'expression recherché et non pas ce qui se trouve entre ces occurences.

Est-ce que je me trompe ?
Dirty Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 17h42   #7
Membre à l'essai
 
Avatar de Dirty Harry
 
Inscription : novembre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 111
Points : 24
Points : 24
toujours rien. Je n'ai pas d'erreur. Il m'affiche Array... on dirait qu'il n'y a rien dans mon tableau.
Dirty Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 17h47   #8
Membre Expert
 
Avatar de coyotte507
 
Inscription : octobre 2006
Messages : 1 325
Détails du profil
Informations personnelles :
Âge : 21

Informations forums :
Inscription : octobre 2006
Messages : 1 325
Points : 1 226
Points : 1 226
Edit:Voila la solution:
Code :
1
2
3
4
5
6
7
8
9
10
<?php
preg_match_all("|ordinateur(.*)ordinateur|",
                 $montexte,
                 $out,
                 PREG_PATTERN_ORDER);
 
//Les résultats sont stockés dans le tableau $out[1]
print_r ($out[1]);
 
?>
coyotte507 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 18h23   #9
Membre à l'essai
 
Avatar de Dirty Harry
 
Inscription : novembre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 111
Points : 24
Points : 24
Merci j'ai trouvé.

preg_match_all($expression, $rapport, $data, PREG_SET_ORDER); print_r($data[0][1]);

merci à tout le monde.

J'ai cependant un autre petit problème. Lorsque j'ai plusieur fois l'occurence du mot recherché, il n'a pas l'air a voir ceux entre ceux des 2 extrimité.

Exemple:

MonMot blablabla MonMot blablabla MonMot......

il ne va prendre que le premier et le dernier.
Dirty Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 19h11   #10
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Rajouter l'option non gourmand (flag U) car par défaut les expressions régulières chercheront à correspondre à la chaîne la plus longue.


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 19h43   #11
Membre chevronné
 
Avatar de Elwyn
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 836
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2006
Messages : 836
Points : 712
Points : 712
Juste une question mais si il y a ordinateur au debut mais plus rien jusqu'a la fin du texte ?
__________________
Dire Straits, Bob Dylan, Led Zeppelin, the Who, Pink Floyd, AC/DC, Guns & Roses, the Doors, ...
Elwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 20h00   #12
Membre à l'essai
 
Avatar de Dirty Harry
 
Inscription : novembre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 111
Points : 24
Points : 24
bonne question...dailleurs c'est le problème que j'ai. Ta une solution ? je croyais que c'était parce qu'il yavait un occurence entre 2.
Dirty Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 20h20   #13
Membre chevronné
 
Avatar de Elwyn
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 836
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2006
Messages : 836
Points : 712
Points : 712
Je posais ca au pro des regex lol j'ai pas un niveau tres prononcé dans ce domaine
__________________
Dire Straits, Bob Dylan, Led Zeppelin, the Who, Pink Floyd, AC/DC, Guns & Roses, the Doors, ...
Elwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 20h24   #14
Membre à l'essai
 
Avatar de Dirty Harry
 
Inscription : novembre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 111
Points : 24
Points : 24
Alors à vous de jouer les pros....svp
Dirty Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 20h57   #15
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Pourquoi ne pas utiliser un explode tout simplement, enfin c'est qu'une suggestion

Sinon, avec un preg_split peut-être.
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2007, 22h05   #16
Membre à l'essai
 
Avatar de Dirty Harry
 
Inscription : novembre 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 111
Points : 24
Points : 24
Pour ceux qui viennent de se joindre, je ré-explique mon problème:



Exemple:

To
blablabla
blablabla
To
blablablabla
blalbalba
To

les 2 paragraphes de blablabla doivent être séparé, dans un tableau probable, parce que je veux décortiquer ces 2 paragraphe

voici ce que j'ai pour le moment:

$expression = '#'.$debut.'(.*)'.$fin.'#Us';
preg_match_all($expression, $rapport, $data, PREG_SET_ORDER);

print_r($data[0][1]);

Ceci fonctionne, mais lorsque je veux aller chercher la derniere partie, elle ne fait pas parti du tableau.

Help!
Merci
Dirty Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2007, 13h20   #17
Membre Expert
 
Avatar de coyotte507
 
Inscription : octobre 2006
Messages : 1 325
Détails du profil
Informations personnelles :
Âge : 21

Informations forums :
Inscription : octobre 2006
Messages : 1 325
Points : 1 226
Points : 1 226
dans ce cas:
Code :
1
2
3
<?php
$tableau = explode ("To", $montexte);
?>
coyotte507 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h32.


 
 
 
 
Partenaires

Hébergement Web