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 ?
Version imprimable
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 ?
'^([[:digit:]]|:|-)+$'
ça non ?
Arf smiley de m**** :D
Code:'^([[:digit:]]|-|:)+$'
çà plante avec çà:
j'ai l'erreur suivante:Code:preg_match('^([[:digit:]]|-|:)+$',$chaine);
Citation:
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found
il faut peut etre pas utiliser preg_match() en faite ?
Essaye ereg
Si ça ne marche pas, essaye d'echapper les : ou le - car ce sont peut etre des caractères réservés.
\: et \-
ereg ne m'enleve rien du tout de ma chaine 8O
je seche là :?Code:
1
2 ereg('/^([[:digit:]]|\-|\:)+$',$chaine);
Heuu montre comment tu l'utilises.
Ta condition et ce qu'il y a après.
hello,
un simple preg_match( '#^[0-9:-]+$#' , $taVar )...
ou faut pas mélanger ?
non ?
en gros je recois des trucs du type:
$date contient une date de la forme:
dans tous les cas il y à la date de présent.Citation:
2006-07-05T13:08:39Z
ou encore
[2006-07-07 10:51:44]
etc...
en faisant:
çà ne m'enleve rien du toutCode:preg_match('^([[:digit:]]|-|:)+$', $date );
pareil çà n'enleve rienCode:
1
2 preg_match( '#^[0-9:-]+$#' , $date )
je doit faire un truc qui va pas là ...
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 - ???
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 -
Okyyyy !
Donc là c'est différent :D
Je n'ai plus trop de temps devant moi la donc je ne peux que te conseiller de regarder la fonction preg_replace.
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...
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);
Salut
L'exemple proposé auparavant est presque correct, seulement il ne faut pas donner NULL mais une chaîne vide :
Au passage, voici un tuto pour les regex :Code:echo preg_replace('#[^0-9: -]#', '', $taVar);
http://g-rossolini.developpez.com/tu...ns-regulieres/
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 );
tiens c'est marrant ca... j'ai justement testé avec NULL et ca fonctionnait... ou alors j'ai eu la berlu :(
C'est surtout que je trouve ça sémantiquement incorrect. Chacun sa vision des choses ^^