Communauté Informatique NDFR.net : Exprimer une chaîne éliminatoire dans une expressions rationnelles - Programmation (C/C++, Delphi, VB, etc.)
 
Exprimer une chaîne éliminatoire dans une expressions rationnelles
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #2  
Old 11-11-2005, 22:43
Cougar's Avatar
Cougar Cougar is offline
Membre senior
 
Join Date: 16-09-2001
Location: Orléans
Age: 40
Posts: 3,850
Send a message via MSN to Cougar
je suppose que c'est du php ?
Après une ptite recherche :

Code:
Utilisation de la fonction strpos()

La fonction strpos() permet de connaitre la position de la première occurence d'une chaine contenu dans une autre chaine. Toutefois comme le premier caractère d'une chaine à pour numéro d'ordre 0 et non 1, se pose le problème de la différenciation entre une chaine contenant la chaine recherchée en début (donc la fonction retourne 0) et une chaine ne contenant pas la chaine recherchée. La syntaxe suivante est donc incorrecte.

    $POS=strpos($ChercheDans,$LaChaine,$Apartir_du_Caract._n°);
    if ($POS==0):
           .....
        Endif;

La fonction ne peut renvoyer 0 (valeur généralement utilisée en retour pour signaler un echec) puisque cette valeur 0 correspond justement à la position réelle du 1er caractère. Aussi PHP retourne une chaine de caractère contenant 'false' si la recherche échoue, et une valeur numérique si elle a aboutie (la chaine recherchée est trouvée dans la chaine principale). Pour obtenir un test correct il faut donc tester le type de la valeur retournée avant de poursuivre les traitements :

    $POS=strpos($ChercheDans,$LaChaine,$Apartir_du_Caract._n°);
    if (!is_string($POS)):
           // Cette syntaxe est correcte. On n'entre dans
	// la boucle  que si la valeur retournée
           // est une valeur numérique.
           .....
        Endif;

Une autre astuce, s'il s'agit simplement de vérifier l'existence d'une sous-chaine dans une chaine, donc qu'aucun traitement sur la chaine principale n'est conditionnée par la position de la sous-chaine (comme couper la chaine à partir de la sous-chaine), et que par ailleurs on ne souhaite pas utiliser les fonctions EREG_xxx basées sur les expressions régulières :

    IF (strpos(" ".$ChercheDans,$LaChaine,$Apartir_du_Caract._n°) >0) :
           // Notez l'espace ajouté au début de
	// la chaine. Ainsi sauf si la sous-chaine commence
           // également par un espace, la condition n'est
	// vérifiée effectivement que si la
           // la sous-chaine est trouvée et ce sans avoir
	// tester le type de la valeur renvoyée.
       ...
__________________
Reply With Quote
 

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Cours de français Benjy Discussions sur le site et/ou le forum 47 01-05-2006 14:47
Installation automatisée de Windows 2000 - XP - Server 2003 Werner Articles 241 02-08-2005 15:52
Comparatif des gestionnaires de téléchargement Kaspof Articles 106 27-02-2004 15:03
Bienvenu dans l'aéro... tanis Discussions 2 09-05-2003 10:03
Mise a jour de phpBB nonoleptitmalin Discussions 7 20-02-2003 08:16

All times are GMT +2. The time now is 04:45.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.