IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Regex simple: Verfier premier caractère d'une chaine. [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Points : 89
    Points
    89
    Par défaut Regex simple: Verfier premier caractère d'une chaine.
    Bonjour,

    J'ai une liste de mots et je veux tout simplement vérifier s'il commence ou non par "-".

    J'y arrive avec substr, mais pas avec une regex (c'est vraiment pas mon truc)

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    $texte='-chat, chien, cheval, -poule, coq';
     
    $tableau = explode(",", $texte);
     
    // Avec substr ça marche	
    foreach($tableau as $element)
    {
    	$rest = substr(trim($element), 0,1);
     
    	if ($rest=='-')
    	{
    		echo $rest . '<br />';
    		echo $element . ' negatif.<br />';
    	}
    	else
    	{
    		echo $rest . '<br />';
    		echo $element . ' positif.<br />';
    	}
    }
     
    // Avec preg_match ça marche pas.
    foreach($tableau as $element)
    {
    	if (preg_match ("^\-", $element))
    	{
    		echo $element . ' negatif.<br />';
    	}
    	else
    	{
    		echo $element . ' positif.<br />';
    	}
    }
    Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in....
    Pouvez-vous me dire ce qui ne va pas ? Je pense que c'est du au fait que "-" à une signification particulières dans les regexs.

    Laquelle des deux solutions serait la moins gourmande à utiliser ?

    Merci

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Il manque le délimiteur de début et fin de motif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (preg_match ("/^-/", $element))
    Se reporter au tutoriel sur les expressions régulières.

    Mais il est possible d'y accéder simplement et directement, tel un tableau de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($element[0] == '-') {
        # ...
    } else {
        # ...
    }


    (documentation, partie Accès et modification d'une chaîne, par caractère)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Points : 89
    Points
    89
    Par défaut
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Regex sur les 3 premiers caractères d'une chaine
    Par boo64 dans le forum Langage
    Réponses: 6
    Dernier message: 01/02/2011, 09h10
  2. Suppression des 30 premiers caractères d'une chaine
    Par linooo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/06/2007, 16h09
  3. Réponses: 2
    Dernier message: 19/06/2007, 16h37
  4. Réponses: 10
    Dernier message: 28/02/2007, 18h47
  5. Supprimer le premier caractère d'une chaine de caractères
    Par Droïde Système7 dans le forum Langage
    Réponses: 2
    Dernier message: 30/09/2005, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo