preg_match

preg_match - PHP - Programmation

Marsh Posté le 30-11-2005 à 21:12:29    

Bonsoir liste,  
 
J'ai des $string dans mon code qui finissent par le mot 'de' que je veux ôter.  
 
pour tester si $string finit par 'de' je fais ceci :
 

Code :
  1. <?php
  2.       function expr($string)
  3.       {
  4.          $patdeux = '/ de $ /';
  5.          if (preg_match($patdeux, $string)){
  6.          echo "le mot finit par de";
  7.          exit;
  8.        }
  9.     }
  10. ?>


 
manifestement, ce n'est pas ça qu'il faut faire  :??:  
 
désolé, je pose des questions simplistes, mais bon... je débute avec les expressions régulières et je suis déjà bien fière d'avoir réussi à enlever les virgules des $string qui commençaient par un virgule.
 
Si quelqu'un voit l'erreur que je commet,... je suis preneur de l'info !
merci d'avance.

Reply

Marsh Posté le 30-11-2005 à 21:12:29   

Reply

Marsh Posté le 30-11-2005 à 22:04:50    

essaye peut être comme ça sans les espaces :  

Code :
  1. $patdeux = '/de$/';


---------------
mathix@jabber.org
Reply

Marsh Posté le 30-11-2005 à 22:33:27    

je l'avais essayé aussi, mais sans succès.
l'erreur doit être ailleurs...
merci de m'avoir répondu.

Reply

Marsh Posté le 30-11-2005 à 22:58:28    

est ce que tu as un petit bout de code avec 2-3 tests ça sera plus simple pour t'aider


---------------
mathix@jabber.org
Reply

Marsh Posté le 01-12-2005 à 00:48:31    

Ben si, '/de$/' est le bon masque. :spamafote:
 
Essaye encore.
 
Et accessoirement, c'est pas comme ça qu'on utilise une fonction.


Message édité par sielfried le 01-12-2005 à 00:48:41

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 01-12-2005 à 07:00:03    

Merci, je dois effectivement avoir un souci au niveau de l'utilisation de la fonction.  
 
Voici ce que je fais :
 

Code :
  1. <?php
  2.       function expr($string)
  3.       {
  4.       $patun = '/^, /';
  5.       $patdeux = '/$de/';
  6.      
  7.            if (!preg_match($patun, $string)){
  8.           if (!preg_match($patdeux, $string)){
  9.            return $string;
  10.         exit;
  11.         }
  12.         }
  13.       /*
  14.         elseif(preg_match($patun, $string)){
  15.         $petit = preg_replace($patun,'',$string);
  16.         $maj = ucfirst($petit);
  17.         return $maj;
  18.         }
  19.       */
  20.    
  21.         elseif(preg_match($patdeux, $string)){
  22.           return preg_replace($patdeux,'',$string);
  23.         }
  24.       }
  25.       ?>


 
J'ai commenté le preg_match sur $patun parce qu'il marche nickel, je n'essaye pour l'instant que le preg_match sur $patdeux. Voici comment j'uilise la fonction :
 

Code :
  1. expr($beneficiaire)


 
sachant que $beneficiaire est 'Walbert, abbé de '
(avec l'espace après de - mais si je mets l'espace dans le masque, ça ne marche pas non plus....)
 
j'imagine que je pourrais faire plus esthétique au niveaux de l'utilisation de la fonction :(
 
Merci pour votre aide !


Message édité par thiebo12375 le 01-12-2005 à 07:23:11
Reply

Marsh Posté le 01-12-2005 à 09:04:35    

Déjà, $ c'est après 'de' qu'il faut le mettre, pas avant... ça veut dire "fin de chaîne".
 
Il suffit ensuite de dire à ton masque d'accepter n'importe quel nombre d'espace entre 'de' et la fin de chaîne.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 01-12-2005 à 10:01:06    

sielfried a écrit :


Il suffit ensuite de dire à ton masque d'accepter n'importe quel nombre d'espace entre 'de' et la fin de chaîne.


 
Merci, comment je fais ça ?

Reply

Marsh Posté le 01-12-2005 à 10:13:59    

Code :
  1. /de\s*$/

Reply

Marsh Posté le 01-12-2005 à 11:08:58    

merci à tous, je vais essayer ceci :
 

Code :
  1. <?php
  2.       function expr($string)
  3.       {
  4.       $patun = '/^, /';
  5.       $patdeux = '/de\s*$/';
  6.      
  7.       if (!preg_match($patun, $string)){
  8.           if (!preg_match($patdeux, $string)){
  9.           return ucfirst($string);
  10.          exit;
  11.         }
  12.         }
  13.      
  14.         if(preg_match($patun, $string)){
  15.         $string = preg_replace($patun,'',$string);
  16.         }
  17.      
  18.        if(preg_match($patdeux, $string)){
  19.         $string = preg_replace($patdeux,'',$string);
  20.         }
  21.        
  22.       return ucfirst($string);
  23.       }
  24.       ?>


 


Message édité par thiebo12375 le 01-12-2005 à 11:18:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed