Convertire une liste de date
Résolu
zeitoun69
Messages postés
59
Statut
Membre
-
zeitoun69 Messages postés 59 Statut Membre -
zeitoun69 Messages postés 59 Statut Membre -
Bonjour,
j'ai extrait une liste de date a partir d'un fichier XML
la date a l'origine est de format 07-10-19 et je dois la transformer en 19/10 ou 19/10/2007
j'ai deja fais le remplacement des - par / (Merci a Lazabelle pour son aide)
le code du traitement de la liste est actuellement celui la :
$contenu=file_get_contents("http://www.therentalcalendar.com/jac/show/xml/237759");
$format_date=preg_replace("/-/","/",$contenu);
$motif='`(../../..)+`';
preg_match_all($motif,$format_date,$date_in);
$res=count($date_in[0]);
echo '"';
for ($i=0; $i<$res; $i++) {
if ($i<($res-1)) {
echo $date_in[0][$i].', ';
}
else echo $date_in[0][$i].'"';
}
?>
Comment changer de format?
merci
j'ai extrait une liste de date a partir d'un fichier XML
la date a l'origine est de format 07-10-19 et je dois la transformer en 19/10 ou 19/10/2007
j'ai deja fais le remplacement des - par / (Merci a Lazabelle pour son aide)
le code du traitement de la liste est actuellement celui la :
$contenu=file_get_contents("http://www.therentalcalendar.com/jac/show/xml/237759");
$format_date=preg_replace("/-/","/",$contenu);
$motif='`(../../..)+`';
preg_match_all($motif,$format_date,$date_in);
$res=count($date_in[0]);
echo '"';
for ($i=0; $i<$res; $i++) {
if ($i<($res-1)) {
echo $date_in[0][$i].', ';
}
else echo $date_in[0][$i].'"';
}
?>
Comment changer de format?
merci
Configuration: Windows XP Firefox 2.0.0.7
11 réponses
-
Bonjour,
peut être une solution plus simple:
// si $contenu="07-01-07"; // annee, mois, jour $array_date=explode("-",$contenu); $date_fr=$array_date[2]."/".$array_date[1]."/20".$array_date[0];
@lain -
en fait au départ j'ai un fichier XML
avec au milieu des dates au mauvais format ... donc ta solution ne fonctionne pas
a la base j'ai
<date_in>07-10-06</date_in>
<type_id>1</type_id>
<nights>1</nights>
</item>
−
<item>
<date_in>07-10-07</date_in>
<type_id>1</type_id>
<nights>1</nights>
....
...
et au final je dois arriver a trouver une liste de style 06/10, 07/10 ou 06/10/2007, 07/10/2007
Merci d'avance -
Salut,
Sais tu extraire la valeur du noeud XML ?
<date_in>07-10-06</date_in>
si tu rentre cette valeur dans une variable $contenu, ma solution doit marcher.
@lain -
Salut,
voici le code complet mais ca ne fonctionne pas :
<?php
//récupération du contenu du fichier xml.
$contenu=file_get_contents("http://www.therentalcalendar.com/jac/show/xml/237759");
//récupère le contenu des balises date_in sous forme d'un tableau
$motif='`(..-..-..)+`';
preg_match_all($motif,$contenu,$date_in);
// si $contenu="07-01-07"; // annee, mois, jour
$array_date=explode("-",$date_in);
$date_fr=$array_date[2]."/".$array_date[1]."/20".$array_date[0];
//compte le nbre de résultats...
$res=count($date_fr[0]);
//commence l'affichage
echo '"';
//fais une boucle
for ($i=0; $i<$res; $i++) {
//condition pour que le dernier membre de la boucle ne soit pas suivi d'une virgule
if ($i<($res-1)) {
echo $date_fr[0][$i].', ';
}
else echo $date_fr[0][$i].'"';
}
?>
As tu une idée de ce que je peux faire?
merci -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Salut,
es tu sur que preg_match_all($motif,$contenu,$date_in); te retourne le bon résultat ?
pour vérifier, juste après tu mets:
echo "<pre>"; print_r($date_in); echo "</pre>";
si ça te retourne bien un array avec tes dates au format 07-10-06
pour continuer il faut que tu le parcours cet array et traitre les valeurs une à une par la solution que je t'ai donnée
foreach($date_in as $cle=>$value){ $array_date=explode("-",$value); $date_fr[]=$array_date[2]."/".$array_date[1]."/20".$array_date[0]; } //affichage echo "<pre>"; print_r($date_fr); echo "</pre>";
Si $date_in est un array à deux dimensions, tiens en compte dans ton (foreach($date_in[]
@lain -
Merci pour ces explications mais je suis trop novice en programmattion pour modifier tes instructions ..
Je sais que je ne peux pas demander un code tout fait mais la je sèche -
salut,
essayes de mettre seulement ce code:
<?php //récupération du contenu du fichier xml. $contenu=file_get_contents("http://www.therentalcalendar.com/jac/show/xml/237759"); //récupère le contenu des balises date_in sous forme d'un tableau $motif='`(..-..-..)+`'; preg_match_all($motif,$contenu,$date_in); echo "<pre>"; print_r($date_in); echo "</pre>"; ?>
et donnes moi une copie du résultat -
ok merci
c'est ce que j'avais tout a l'heure
Array
(
[0] => Array
(
[0] => 07-10-01
[1] => 07-10-02
[2] => 07-10-03
[3] => 07-10-04
[4] => 07-10-05
[5] => 07-10-06
[6] => 07-10-07
[7] => 07-10-08
[8] => 07-10-09
[9] => 07-10-10
[10] => 07-10-11
[11] => 07-10-12
[12] => 07-10-13
[13] => 07-10-14
[14] => 07-10-15
[15] => 07-10-16
[16] => 07-10-17
[17] => 07-10-18
[18] => 07-10-19
[19] => 07-10-20
[20] => 07-10-21
[21] => 07-10-22
[22] => 07-10-23
[23] => 07-10-24
[24] => 07-10-25
[25] => 07-10-26
[26] => 07-10-27
[27] => 07-10-28
[28] => 07-11-01
[29] => 07-11-02
[30] => 07-11-03
[31] => 07-11-09
[32] => 07-11-10
[33] => 07-11-11
[34] => 07-11-12
[35] => 07-11-13
[36] => 07-11-14
[37] => 07-11-15
[38] => 07-11-16
[39] => 07-11-17
[40] => 07-11-18
[41] => 07-11-22
[42] => 07-11-23
[43] => 07-11-24
[44] => 07-12-05
[45] => 07-12-06
[46] => 07-12-12
[47] => 07-12-13
[48] => 07-12-14
[49] => 07-12-22
[50] => 07-12-23
[51] => 07-12-24
[52] => 07-12-25
[53] => 07-12-26
[54] => 07-12-29
[55] => 07-12-30
[56] => 07-12-31
[57] => 08-01-01
[58] => 08-01-02
[59] => 08-01-03
[60] => 08-01-04
[61] => 08-01-31
[62] => 08-02-01
[63] => 08-02-02
[64] => 08-03-18
[65] => 08-03-19
[66] => 08-05-21
[67] => 08-05-22
[68] => 08-05-23
[69] => 08-05-24
[70] => 08-05-25
[71] => 08-05-26
[72] => 08-05-27
[73] => 08-05-28
[74] => 08-05-29
[75] => 08-05-30
)
[1] => Array
(
[0] => 07-10-01
[1] => 07-10-02
[2] => 07-10-03
[3] => 07-10-04
[4] => 07-10-05
[5] => 07-10-06
[6] => 07-10-07
[7] => 07-10-08
[8] => 07-10-09
[9] => 07-10-10
[10] => 07-10-11
[11] => 07-10-12
[12] => 07-10-13
[13] => 07-10-14
[14] => 07-10-15
[15] => 07-10-16
[16] => 07-10-17
[17] => 07-10-18
[18] => 07-10-19
[19] => 07-10-20
[20] => 07-10-21
[21] => 07-10-22
[22] => 07-10-23
[23] => 07-10-24
[24] => 07-10-25
[25] => 07-10-26
[26] => 07-10-27
[27] => 07-10-28
[28] => 07-11-01
[29] => 07-11-02
[30] => 07-11-03
[31] => 07-11-09
[32] => 07-11-10
[33] => 07-11-11
[34] => 07-11-12
[35] => 07-11-13
[36] => 07-11-14
[37] => 07-11-15
[38] => 07-11-16
[39] => 07-11-17
[40] => 07-11-18
[41] => 07-11-22
[42] => 07-11-23
[43] => 07-11-24
[44] => 07-12-05
[45] => 07-12-06
[46] => 07-12-12
[47] => 07-12-13
[48] => 07-12-14
[49] => 07-12-22
[50] => 07-12-23
[51] => 07-12-24
[52] => 07-12-25
[53] => 07-12-26
[54] => 07-12-29
[55] => 07-12-30
[56] => 07-12-31
[57] => 08-01-01
[58] => 08-01-02
[59] => 08-01-03
[60] => 08-01-04
[61] => 08-01-31
[62] => 08-02-01
[63] => 08-02-02
[64] => 08-03-18
[65] => 08-03-19
[66] => 08-05-21
[67] => 08-05-22
[68] => 08-05-23
[69] => 08-05-24
[70] => 08-05-25
[71] => 08-05-26
[72] => 08-05-27
[73] => 08-05-28
[74] => 08-05-29
[75] => 08-05-30
)
) -
-
Salut,
Alors voici la synthèse:
(chez moi ça marche)<?php //récupération du contenu du fichier xml. $contenu=file_get_contents("http://www.therentalcalendar.com/jac/show/xml/237759"); //récupère le contenu des balises date_in sous forme d'un tableau $motif='`(..-..-..)+`'; preg_match_all($motif,$contenu,$date_in); /* echo "Sortie preg_match <br><pre>"; print_r($date_in); echo "</pre>"; */ foreach($date_in[0] as $cle=>$value){ $array_date=explode("-",$value); $date_fr[0][]=$array_date[2]."/".$array_date[1]."/20".$array_date[0]; } //compte le nbre de résultats... $res=count($date_fr[0]); //commence l'affichage echo '"'; //fait une boucle for ($i=0; $i<$res; $i++) { //condition pour que le dernier membre de la boucle ne soit pas suivi d'une virgule if ($i<($res-1)) { echo $date_fr[0][$i].', '; }else { echo $date_fr[0][$i].'"'; } } ?> -
Un grand merci pour cette aide précieuse. Ca fonctionne tres bien
Olivier