|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
Bonjour
Dans des chaînes ($articles), j'ai des dates au format (m-Y) Exemple : 02-2006 Si j'utilise la fonction de cette façon : Code :
En revanche, en rajoutant le séparateur (-) Code :
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Salut,
tu peux tenter : if(ereg("$mois-$annee",$article)) { Si c'est juste pour faire ce test, tu peux utiliser strstr(). Bye |
|
|
00
|
|
|
#3 | |
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
Citation:
J'avais déjà testé cette syntaxe et c'est également resté sans réponse. Et pourtant, dans mes chaines de caractéres, il y a bien des dates à ce format (mois-annee). (?) Pas facile "d'apprivoiser" toutes les ficelles des regex.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
Si tu veux juste vérifier la présence du tiret, un strpos() sera plus rapide.
__________________
Pierre 1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune. 2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers 3. Un code rapide c'est bien, un code maintenable c'est mieux ... Why was the font tag an orphan ? Because it didn't have a font-family. |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Ceci fonctionne très bien :
Code :
Pour vérifier qu'un mois est valide c'est plutôt : ([0-9]{1,2}) car ([0-9]{2}) te match aussi des mois supérieur à 12 |
||
|
|
00
|
|
|
#6 | ||
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
En fait, comme je l'ai précisé au début, si je fais des tests indépendants comme ceci :
Code :
C'est ce fameux séparateur (-) qui semble poser probléme EDIT : Djakisback, j'avais pas vu ta réponse, je vais tester.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
||
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Citation:
si tu veux vraiment restreindre a 1-12, c'est un peu plus sioux : match uniquement : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 01, 02, 03, 04, 05, 06, 07, 08, 09
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
En effet, sry
|
|
|
00
|
|
|
#9 | |||||
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
Citation:
exemple : Code :
Sinon Fladnag, la syntaxe compléte donnerait quoi stp ?
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|||||
|
|
00
|
|
|
#10 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
hum, en gros tu cherches a savoir si une date DETERMINEE est présente dans un article ??
ca revient a verifier qu'une chaine est dans une autre. donc : Code :
maintenant, si tu ne veux pas matcher 11-10 quand tu recherche 1-10, tu a raison d'utiliser des expressions régulieres, qui devient alors : Code :
ereg("[^0-9]$jour-$mois[^0-9]", $article); Code :
ereg("[^0-9]$jour\-$mois[^0-9]", $article);
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
||
|
|
00
|
|
|
#11 |
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
Bon, l'un ou l'autre regex déclenche un parse error.
Pas évident quand on est pas familier de ces syntaxes.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Tes dates sont sous quelle forme ?
01-02-2001 ou 1-02-2001 ou les deux ? Si elles sont seulement de la première tu peux utiliser : Code :
strpos($article, "$jour-$mois-$annee") Code :
ereg("[^0-9]".$jour."-".$mois."[^0-9]", $article) |
|
|
00
|
|
|
#13 | ||
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
Dans l'exemple ci-dessous, il n' y a pas de 0 au début du jour, ce qui pourrait être effectivement générateur d'erreur ou de conflit, et pourtant la réponse est erronée :
Exemple : Code :
grrrrrrrr !
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
L'important c'est de savoir si elles sont toujours formatées :
DD/MM/YYYY et non D/MM/YYYY ou D/M/YYYY etc. Si c'est le cas il faut que tu recherches : $jour ="01" et non $jour = "1" et c'est bon avec strpos(). |
|
|
00
|
|
|
#15 |
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
C'est comme dans le dernier exemple :
(d-m-Y)
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|
|
00
|
|
|
#16 | |
|
Membre éprouvé
![]() Inscription : mai 2006 Messages : 694 ![]() |
Citation:
Code :
if(ereg("($mois)\-($annee)",$article))
__________________
Pensez au tag
|
|
|
|
00
|
|
|
#17 | ||
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Ok donc si tu es sure que tu as tjrs 2 caractères pour les jours et les mois, il faut que tu fasses tes tests sur 2 caractères, comme déjà précisé au-dessus :
Code :
|
||
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
en fait la question c'est de savoir si tu *connait* les dates que tu cherches avant => strpos
ou si tu ne les connait pas et tu cherches a récuperer/verifier toutes les dates de l'article => ereg ou preg
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#19 | |
|
Membre émérite
![]() Alain Inscription : novembre 2005 Messages : 897 ![]() |
Citation:
Je récupére donc la variable $article dans mes tables pour la traiter. L'objectif est de comparer la date qui figure dans cette chaîne à une autre, tel que c'est construit dans les récents exemples.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre. C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles. |
|
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
ok, donc si tu connais la date recherchée, strpos suffit.
Si tu sais également un peu plus de choses (par exemple que la date est précédé d'un espace ou d'un caractere deux points) tu peux aussi faire quelque chose du genre : Code :
if (strpos($article, " $jour-$mois-$annee")!== FALSE) { Code :
if (strpos($article, ":$jour-$mois-$annee")!== FALSE) { ca va t'afficher exactement ce qu'il contient. Ca te permettra de detecter les eventuels espaces entre les tirets, les caracteres spéciaux, les balises html non prévues, etc...
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com