Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2006, 11h26   #1
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
Par défaut Expression réguliere aide

Bonjour,

je suis naze en expression réguliere alors il me faudrai que je n'accepte que dans ma chaine

- que les chiffre 0 à 9
- que des tirets "-"
- que des deux points ":"

une ame charitable pour m'aider ?
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 11h32   #2
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
'^([[:digit:]]|-)+$'

ça non ?
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 11h33   #3
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Arf smiley de m****

Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 11h45   #4
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
çà plante avec çà:

Code :
preg_match('^([[:digit:]]|-|:)+$',$chaine);
j'ai l'erreur suivante:

Citation:
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 11h52   #5
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
il faut peut etre pas utiliser preg_match() en faite ?
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 11h54   #6
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Essaye ereg
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 11h55   #7
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Si ça ne marche pas, essaye d'echapper les : ou le - car ce sont peut etre des caractères réservés.
\: et \-
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h02   #8
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
ereg ne m'enleve rien du tout de ma chaine
Code :
1
2
 
ereg('/^([[:digit:]]|\-|\:)+$',$chaine);
je seche là
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h05   #9
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Heuu montre comment tu l'utilises.
Ta condition et ce qu'il y a après.
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h13   #10
Membre chevronné
 
Inscription : mars 2005
Messages : 583
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 583
Points : 651
Points : 651
hello,

un simple preg_match( '#^[0-9:-]+$#' , $taVar )...

ou faut pas mélanger ?

non ?
Petibidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h22   #11
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
en gros je recois des trucs du type:

$date contient une date de la forme:
Citation:
2006-07-05T13:08:39Z
ou encore
[2006-07-07 10:51:44]
etc...
dans tous les cas il y à la date de présent.

en faisant:
Code :
preg_match('^([[:digit:]]|-|:)+$', $date );
çà ne m'enleve rien du tout

Code :
1
2
 
preg_match( '#^[0-9:-]+$#' , $date )
pareil çà n'enleve rien

je doit faire un truc qui va pas là ...
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h23   #12
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Houla mais attend je crois qu'on part pas sur la même chose là.
Tu veux vérifier si la chaine est correcte ou lui supprimer tout ce qui n'est pas un chiffre : ou - ???
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h24   #13
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
je veux supprimer ce qui ne va pas

désolé me suis super mal pris pour exposer mon problème

en gros je veux pouvoir garder seuleument
des chiffres, : et -
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h26   #14
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Okyyyy !
Donc là c'est différent
Je n'ai plus trop de temps devant moi la donc je ne peux que te conseiller de regarder la fonction preg_replace.
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h34   #15
Membre chevronné
 
Inscription : mars 2005
Messages : 583
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 583
Points : 651
Points : 651
ah bah en expliquant correctement le pourquoi du comment on comprend un peu mieux

preg_replace( '#[^0-9: -]#' , null , $taVar );

je t'ai rajouté les espaces dans les trucs à garder, sinon ta date risque d'etre difficile à exploiter...
Petibidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 12h56   #16
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
j'ai l'impression que preg_replace ne fonctionne pas du tout comme je veux, çà ne m'enleve rien du tout.

bon voilà ce que j'ai fait, c'est hyper bourrin, mais çà fonctionne:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
		$array = array('0','1','2','3','4','5','6','7','8','9','-',':');
		$chaine='';
 
		for ($x=0;$x<strlen($date);$x++){
			if(in_array(substr($date,$x,1),$array)){		
				$chaine .= substr($date,$x,1);
			}elseif (substr($date,$x,1)==' ' || substr($date,$x,1)=='T' ){
				$chaine .= ' ';
			}
		}
 
		$datetime = mktime($chaine);
 
		$date = date('d-m-Y H\hi', $datetime);
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 13h02   #17
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

L'exemple proposé auparavant est presque correct, seulement il ne faut pas donner NULL mais une chaîne vide :

Code :
echo preg_replace('#[^0-9: -]#', '', $taVar);
Au passage, voici un tuto pour les regex :
http://g-rossolini.developpez.com/tu...ns-regulieres/
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 13h12   #18
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
1 - j'ai vraiment fait le boulet depuis tout à l'heure en faite je n'affecter pas le résultat à une autre variable pensent que la fonction le faisait.

2 - Merci à tous

là çà fonctionne nikel:

Code :
1
2
3
 
		$date = str_replace('T', ' ',$date);
		$date = preg_replace('#[^0-9: -]#', '' , $date );
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 14h27   #19
Membre chevronné
 
Inscription : mars 2005
Messages : 583
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 583
Points : 651
Points : 651
tiens c'est marrant ca... j'ai justement testé avec NULL et ca fonctionnait... ou alors j'ai eu la berlu
Petibidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2006, 14h29   #20
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
C'est surtout que je trouve ça sémantiquement incorrect. Chacun sa vision des choses ^^
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h42.


 
 
 
 
Partenaires

Hébergement Web