Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1838 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  opérateur de comparaison

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

opérateur de comparaison

n°1257140
thiebo1237​5
Posté le 01-12-2005 à 22:12:16  profilanswer
 

Bonsoir,  
 
J'ai un petit souci avec l'opérateur  ||  dans une fonction. Voici ce que je fais :
 
 

Code :
  1. <?php
  2.        function expr($string)
  3.        {
  4.         $patun = '/^, /';
  5.         $patdeux = '/de\s*$/';
  6.      
  7.         if (!preg_match($patun, $string)||($patdeux, $string)){
  8.            return ucfirst($string);
  9.          exit;
  10.         }


 
Je veux donc tester que $string ne commence pas par un virgule ni ne finit par le mot 'de'. Avant de faire les preg_replace, je teste le $string disant que si le string ne commence pas par un virgule ET ne finit pas par le mot 'de', qu'on retourne $string...
 
mais j'ai une erreur :
 
Parse error: parse error, unexpected ',' in /home/thiebo/public_html/messources1/actes/expr_reg.php on line 7
 
ligne 7 étant la ligne qui contient if (!preg_match($patun, $string)||($patdeux, $string)){
 
Quelqu'un voit où je fais fausse route, et comment réparer ??
 
Merci !

mood
Publicité
Posté le 01-12-2005 à 22:12:16  profilanswer
 

n°1257170
onizuka_se​nsei
Posté le 01-12-2005 à 22:51:47  profilanswer
 

thiebo12375 a écrit :

Bonsoir,  
 
J'ai un petit souci avec l'opérateur  ||  dans une fonction. Voici ce que je fais :
 
 

Code :
  1. <?php
  2.        function expr($string)
  3.        {
  4.         $patun = '/^, /';
  5.         $patdeux = '/de\s*$/';
  6.      
  7.         if (!preg_match($patun, $string)||($patdeux, $string)){
  8.            return ucfirst($string);
  9.          exit;
  10.         }


 
Je veux donc tester que $string ne commence pas par un virgule ni ne finit par le mot 'de'. Avant de faire les preg_replace, je teste le $string disant que si le string ne commence pas par un virgule ET ne finit pas par le mot 'de', qu'on retourne $string...
 
mais j'ai une erreur :
 
Parse error: parse error, unexpected ',' in /home/thiebo/public_html/messources1/actes/expr_reg.php on line 7
 
ligne 7 étant la ligne qui contient if (!preg_match($patun, $string)||($patdeux, $string)){
 
Quelqu'un voit où je fais fausse route, et comment réparer ??
 
Merci !


Je ne sais pas si c'est la cause de ton prob, mais la ligne 7, je la trouve douteuse :D
Essaye comme ça:

Code :
  1. if (!preg_match($patun, $string) || !preg_match($patdeux, $string))


Message édité par onizuka_sensei le 01-12-2005 à 22:52:30
n°1257173
naceroth
Posté le 01-12-2005 à 22:54:07  profilanswer
 

...
 
Une fonction prend comme paramètres ce qui se trouve entre ses parenthèses, pas le contenu des 36000 suivantes. Et un opérateur logique sert à "calculer" le resultat de 2 booléens, pas à relier diverses choses.
 
Puis, vu ce que tu veux vérifier, c'est normalement faisable avec un seul masque, pas la peine de faire plusieurs preg_match (oui, c'est ça le problème, tu as "juste" oublier le preg_match entre le || et le ( :D) pour ça.

n°1257229
thiebo1237​5
Posté le 02-12-2005 à 07:40:51  profilanswer
 

naceroth a écrit :

...
 
Une fonction prend comme paramètres ce qui se trouve entre ses parenthèses, pas le contenu des 36000 suivantes. Et un opérateur logique sert à "calculer" le resultat de 2 booléens, pas à relier diverses choses.
 
Puis, vu ce que tu veux vérifier, c'est normalement faisable avec un seul masque, pas la peine de faire plusieurs preg_match (oui, c'est ça le problème, tu as "juste" oublier le preg_match entre le || et le ( :D) pour ça.


 
 
Merci pour vos réponses, mais aie aie aie, je ne suis pas sûr d'avoir pigé... La solution proposée par onizuka_sensei n'a pas marchée non plus. D'ailleurs, la fonction marche très bien sans le test de l'expression régulière :
 
maintenant la fonction est comme ceci :
 

Code :
  1. <?php
  2.        function expr($string)
  3.        {
  4.         $patun = '/^, /';
  5.         $patdeux = '/de\s*$/';
  6.         $string = preg_replace($patun,'',$string);
  7.         $string = preg_replace($patdeux,'',$string);
  8.         return ucfirst($string);
  9.        }
  10.      ?>


 
j'imagine que je perds en efficacité sur les $string qui ne commencent par par un virgule et qui ne finissent pas par le mot 'de' mais... ça marche quand même. qu'en pensez-vous ? Mon if (preg_match ....) est-il nécessaire ?

n°1257287
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-12-2005 à 10:27:39  profilanswer
 

Si tu avais voulu faire une seule pattern de test  

Code :
  1. /(^,)|(de\s*$)/


 
Maintenant ta nouvelle fonction ne fait plus du tout la même chose, elle remplace carrement tes patterns par rien. Tu peux quand même le faire en une seule fois

Code :
  1. function expr(string){
  2.   return preg_replace('/^(,|)(.*?)(de\s*|)$/', $2, $string);
  3. }


 
edit: manquait un bout :o


Message édité par anapajari le 02-12-2005 à 10:31:07
n°1257310
thiebo1237​5
Posté le 02-12-2005 à 10:46:24  profilanswer
 

pfiou !!! Merci beaucoup. J'ai beaucoup à appendre encore en matière d'expressions régulières....
A+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  opérateur de comparaison

 

Sujets relatifs
l'opérateur "->"(aide) Surcharge d'operateur en c++
[resolu][PHP] extraction d'un operateur dans une stringDebutant - Comparaison de chaine de caractère
comparaison avec date systèmehelp -requete sql comparaison 2chaines
Opérateur de comparaison casse sensitif[Resolu] Validation HTML VS operateur de comparaison PHP
MAP (::STL) - Definir un nouvel operateur de comparaisonOpérateur de comparaison : vérifie si mon champ contient le mot voulu
Plus de sujets relatifs à : opérateur de comparaison


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR