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. 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.
    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. 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. pas de réponses...

          Est-ce que tout le monde sèche ?
          Ou peut-être que mes questions manquent de clarté ?