Php : substr_count

Résolu/Fermé
juanou - 26 nov. 2008 à 19:26
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 - 29 nov. 2008 à 08:40
Bonjour à tous,

J'ai deux questions à propos de la fonction php "substr_count($haystack, $needle)"

1°/ Est-ce que needle accepte les expressions régulières ?

2°/ Je suis nul en expressions régulières. Sauriez-vous m'en donner une qui me permette de désigner une chaine précédée et/ou suivie d'un espace ou de rien (rien : c'est à dire le début ou la fin de la chaine).
Par exemple, si la chaine recherchée est "et", et la chaine interrogée est "Et jette-moi ce navet et cette blette, mon cher ET", l'expression régulière validera le premier, le sixième et le dernier mot de la chaine.


Merci

4 réponses

pas de réponses...

Est-ce que tout le monde sèche ?
Ou peut-être que mes questions manquent de clarté ?
0
Alain_42 Messages postés 5358 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 902
28 nov. 2008 à 22:07
Je ne suis pas très doué en expression régulières, j'ai fait celle là mai sen tatonant pas mal et en cherchant sur les sites

qqs tuyaux:

^ début de chaine

$ fin de chaine

{} precise le nombre de caractères précédents attendus

désolé
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
29 nov. 2008 à 08:04
Merci Alain_42

Je crois que j'ai fini par déterminer mon expression régulière. Ca donnerait ça :
" et |^(et )|( et)$|^et$"

Mais je bloque maintenant sur mon premier problème : substr_count semble ne pas gérer les expression régulières.
Or mon idée était de compter dans un texte les occurences d'un mot (ici "et").

Quelqu'un aurait-t-il l'idée d'une autre fonction ou d'un code ?
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
29 nov. 2008 à 08:40
Ca y est j'y suis !!

avec la fonction preg_match_all je peux avoir le nombre d'occurences de mon expression régulière dans une chaine.

ainsi :

<?php
$chaine = 'Et jette-moi ce navet et cette blette, mon cher ET' ;
$ereg = "( et |^et | et$|^et$)i" ; // j'ajoute encore un "i" à la fin de ma regExp, pour ignorer la casse
$occurences = preg_match_all ($ereg, $chaine, $res) ;

echo $occurences ;
?>

voilà qui m'affichera le nombre de fois que le mot "et" apparaît dans $chaine, à savoir : 3.


Merci Alain_42
Merci moi-même.

A très vite.
0