Php : substr_count

Résolu
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
Configuration: Windows XP
Firefox 3.0.4

4 réponses

  1. pas de réponses...

    Est-ce que tout le monde sèche ?
    Ou peut-être que mes questions manquent de clarté ?
    1. 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é
      1. 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 ?
        1. 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.