Php : substr_count

Résolu
juanou -  
juanou Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

4 réponses

juanou
 
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 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   58
 
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   Statut Membre Dernière intervention   58
 
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