Ouais ça marche parfaitement chez moi! Je peux même faire des fonctions OU et ET dedans!
Ouais ça marche parfaitement chez moi! Je peux même faire des fonctions OU et ET dedans!
Essaie de le tester avec le module "Testeur d'Expressions Régulières" de firefox sans les #, parce que là aussi, je viens de le vérifier, ça marche!
Merci de cette réponse.
En effet, ça marche dans le Testeur Firefox, mais hélas pas dans mon preg_match_all(...., PREG_SET_ORDER);
merci mais dans le cas qui m'intéresse je dois impérativement utiliser un preg_match_all...
Mais ça marche avec preg_match_all() aussi! j'ai testé ce bout de code :
avec ce texte, ca affiche "ca matche pas..." et quand tu enlèves "mot", ca affiche "ca matche".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?php $texte= "Je ne contiens aucun mot"; if (preg_match_all("/^((?!mot).)*$/",$texte, $matches, PREG_SET_ORDER)) echo "ca matche"; else echo "ca matche pas..."; ?>
Je vois, mais je reste coincé sur l'utilisation de ta solution lorsqu'on a plusieurs $matches dans la chaîne initiale...
Par exemple, le code suivant fait ressortir chaque extrait lorsqu'il contient 2 chiffres et un "mot" :
merci encore de ton aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $texte = "01 Je contiens un mot 02 Je n'en contiens aucun 03 Je contiens un mot 04 Je contiens un mot 05 Je n'en contiens aucun"; preg_match_all("/(\d{2})[^\d]*?mot/", $texte, $matches, PREG_SET_ORDER); for ($i=0;$i<count($matches);$i++) { echo $matches[$i][0],'<br />'; }
Et toi tu veux qu'il fasse ressortir toutes les phrases commençant par deux chiffres et sans le mot "mot" ?
oui, c'est possible en utilisant une solution comme celle que tu proposes ?
J'ai essayé ça qui marche mais sans pouvoir afficher les numéros de phrases :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php $texte = "01 Je contiens un mot 02 Je n'en contiens aucun 03 Je contiens un mot 04 Je contiens un mot 05 Je n'en contiens aucun"; $tab=preg_split('/\d{2}/',$texte); for($i=1;$i < count($tab);$i++) { if (preg_match("/^((?!mot).)*$/",$tab[$i])) echo $tab[$i]; echo "<br />"; } ?>
Voilà ce que j'obtiens en bricolant un peu :
Merci encore, et si tu finis par trouver une solution en regex, je suis preneur!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $texte = "01 Je contiens un mot 02 Je n'en contiens aucun 03 Je contiens un mot 04 Je contiens un mot 05 Je n'en contiens toujours aucun"; $tab=preg_split('/\d{2}/',$texte); for($i=1;$i < count($tab);$i++) { if (preg_match("/^((?!mot).)*$/",$tab[$i])) { echo substr($texte, stripos($texte, $tab[$i])-3, strlen($tab[$i])+3),'<br />'; } }
Bah c'est déjà très bon ça!
En attendant LA regex!
Bonjour,
un premier essai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php $texte = "01 Je contiens un mot 02 Je n'en contiens aucun 03 Je contiens un mot 04 Je contiens un mot 05 Je n'en contiens aucun"; $reg = '/(\d{2})((?!mot).)*?(?=\d{2}|$)/'; preg_match_all($reg, $texte, $matches, PREG_SET_ORDER); for ($i=0;$i<count($matches);$i++) { echo $matches[$i][0],'<br />'; }
- Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
- Merci d'utiliser les balises de code (# dans l'éditeur)
- N'oubliez pas de vous servir des boutons , et
S.N.A.F.U
pas mal pour un premier essai!
Est-ce qu'on peut dire que le problème est résolu ?
Bonjour,
pour moi c'est ok en tout cas.
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager