![]() |
Exprimer une chaîne éliminatoire dans une expressions rationnelles
|
Thread Tools
![]() |
Display Modes
![]() |
|
#1
|
||||
|
||||
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. ... |
#2
|
||||
|
||||
Non il ne s'agit pas de PHP et en fait je suis restreint à une seule expression régulière. Donc pas de "if" et autres tests avant de retourner le résultat, c'est la regexp qui est décisive :confused:
__________________
http://max.skyrock.com/ |
#3
|
||||
|
||||
M'exerçant depuis déjà quelque temps au regex, c'est une chose que j'ai moi aussi cherché à faire et pour laquelle je n'ai pas encore trouvé la solution
![]() Si jamais une bonne âme pouvait nous éclairer ![]()
__________________
- La théorie, c'est quand on sait tout et que rien ne fonctionne. - La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. - Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi ! - Albert Einstein - |
#4
|
||||
|
||||
J'ai tripatouiller un peu la chose hier soir et j'avoue que je n'ai rien trouvé, je vais continuer à chercher...
|
![]() |
Bookmarks |
«
Previous Thread
|
Next Thread
»
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|
![]() |
||||
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 06:54.
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.