× Plantage du forum 28/03/2023 - Perte de messages - A lire
 > Tous les forums > Forum des Webmasters
 tester et remplacer un mot dans une phraseSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
t671
  Posté le 10/12/2011 @ 12:20 
Aller en bas de la page 
Astucien

Bonjour,

Dans un formulaire, je récupère une date qui peut être de différent format : "10 décembre 2011", ou "10 DECEMBRE 2011", ou "avant le 10 decembre 2011", ou "après le 10 décembre 2011", ........... Soit dit, de différent format selon la saisie.
Je voudrais récupérer uniquement le mois saisie, et l'enregistrer dans ma base sur 3 lettres. Donc, si décembre, j'enregistre DEC. Si Janvier, j'enregistre JAN .............
J'ai vu sur le net différentes façons de faire et je suis un peu perdu (str_replace, strpos,ereg, ...).

Quelle serait pour moi la meilleure expression à utiliser (avec exemples ....) ?

J'ai commencé ceci :

$trouve = array("jan", "fev", "fév", "mar", "avr", "mai", "juin", "juil", "aout", "août", "sep", "oct", "nov", "dec", "déc"); // un tableau contenant diverses expression possible pour le mois

$result = strpos($date_naissance, $trouve); // J'ai trouvé l'expression à remplacer dans ma phrase "$date_naissance"

if $resut == "jan" { $resut = JAN; }

elseif (($resut == "fev") OR ($resut == "fév") ...........

Mais bien sur, ça ne fonctionne pas. Car $result ne me retourne pas une valeur, mais "Array" !!!!

Comment pourrais-je faire ?

Merci

Publicité
y.bli
 Posté le 10/12/2011 à 17:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien
Message original par t671

Bonjour,

Dans un formulaire, je récupère une date qui peut être de différent format : "10 décembre 2011", ou "10 DECEMBRE 2011", ou "avant le 10 decembre 2011", ou "après le 10 décembre 2011", ........... Soit dit, de différent format selon la saisie.
Je voudrais récupérer uniquement le mois saisie, et l'enregistrer dans ma base sur 3 lettres. Donc, si décembre, j'enregistre DEC. Si Janvier, j'enregistre JAN .............
J'ai vu sur le net différentes façons de faire et je suis un peu perdu (str_replace, strpos,ereg, ...).

Quelle serait pour moi la meilleure expression à utiliser (avec exemples ....) ?

Bonjour,

Avant d'aller plus loin dans ta solution, il est évident qu'il sera difficile de lister tout ce que quelqu'un peut imaginer pour remplir ton formulaire, sans compter les fautes d'orthographe, les lettres oubliées, les majuscules au début, les caractères accentués...

Je préfère, dans ce cas, utiliser une liste déroulante à 3 entrées (jour - mois - année). Au moins la variable récupérée est toujours valide.

Exemple :

@+

t671
 Posté le 10/12/2011 à 18:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
y.bli a écrit :

Bonjour,

Avant d'aller plus loin dans ta solution, il est évident qu'il sera difficile de lister tout ce que quelqu'un peut imaginer pour remplir ton formulaire, sans compter les fautes d'orthographe, les lettres oubliées, les majuscules au début, les caractères accentués...

Je préfère, dans ce cas, utiliser une liste déroulante à 3 entrées (jour - mois - année). Au moins la variable récupérée est toujours valide.

Exemple :

@+

Effectivement, j'y avait pensé ! Mais si la saisie doit être "avant 1 janvier 1786", ou "entre avril 1567 ezt décembre 1567", je fais comment ?

Si tu as la sdolution, je suis prenneur .......

J'avais pensé à ça, ou équivalent :

$mois1 = jan; $mois2 = JAN; $mois3 = fev; $mois4 = fév; $mois5 = FEV; $mois6 = mar; $mois7 = MAR; // etc ...........

$result = strpos($date_naissance, $mois1);

if ($result !== false) { $mois = JAN; }

$result = strpos($date_naissance, $mois2);

if ($result !== false) { $mois = JAN; }

$result = strpos($date_naissance, $mois3);

if ($result !== false) { $mois = FEB; } ..........

Le problème c'est que c'est très long, et je pense qu'il y aurait plus simple de mettre les $mois1, $mois2, $mois3, $mois4, .......... dans un Array.

$mois = array("jan", "JAN", "fev", "fév", "FEV", "mar", "avr", "mai", "juin", "juil", "aout", "août", "sep", "oct", "nov", "dec", "déc");

Ensuite, avec une fonction style $result = strpos($date_naissance, $mois[]); => rechercher un des éléments de l'Array dans la chaine de caractère $date_naissance, et le résultat est $mois[xxx].

Mais je ne connais pas bien la manipulation des Array !!!

y.bli
 Posté le 10/12/2011 à 20:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien
t671 a écrit :

Effectivement, j'y avait pensé ! Mais si la saisie doit être "avant 1 janvier 1786", ou "entre avril 1567 ezt décembre 1567", je fais comment ?

Avec ma solution, tu peux toujours ajouter des champs de saisie à cocher: avant, entre, après, date exacte...

Pour l'année, comme il peut y en avoir beaucoup, ça peut être un champ à remplir

@+



Modifié par y.bli le 10/12/2011 20:26
midnightblue
 Posté le 12/12/2011 à 01:19 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

La remarque de y.bli paraît pertinente pour assurer l'homogénéité du format des dates. A adapter à ton cas...

Pour ta manip' de tableaux.

<?php

$date_naissance="février"; // exemple d'entrée

$result=""; // Initialisation de $result

$trouve = array("jan", "fev", "fév", "mar", "avr", "mai", "juin", "juil", "aout", "août", "sep", "oct", "nov", "dec", "déc"); // ton tableau initial

// J'ai ajouté le tableau ci-dessous avec les sorties désirées et respectives par rapport au tableau trouve().

$enregistre = array("JAN", "FEV", "FEV", "MAR", "AVR", "MAI", "JUN", "JUL", "AOU", "SEP", "SEP", "OCT", "NOV", "DEC", "DEC");

// On parcourt les valeurs du tableau trouve().

for($i=0;$i<count($trouve);$i++) {

if(@eregi($trouve[$i],$date_naissance)) { // si la valeur du tableau se trouve dans $date_de_naissance

$result=$enregistre[$i]; // on affecte à $result la valeur respective du tableau enregistre().

break; // on sort de la boucle

}

}

echo $result; // affichage de la valeur à enregistrer.

?>

C'est plus court !

*µ*

t671
 Posté le 12/12/2011 à 12:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Effectivement,
je vais adopter la solution de y.bli.

Et midnightblue, je te remercie , car ma curiosité est comblée !!!!

A ++

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
Station de charge portable Bluetti EB70 LiFePO4 716Wh/1000W à 449 €
449 € 799 € -44% @Geekbuying

Geebuying fait une belle promotion sur la station de charge portable Bluetti EB70 716Wh/1000W qui passe à 449 € grâce au code promo 7S0EQJPV. On la trouve ailleurs à partir de 799 €.

Cette Power Station offre une capacité de 716Wh et 4 sorties AC de 1000W à onde sinusoïdale pure. Elle peut alimenter des appareils de moins de 1000 W, tels que des ordinateurs portables, des drones, des petits congélateurs TV, des petits ventilateurs, etc. La batterie LiFePO4 supporte plus de 2500 cycles de charge. Elle fournit suffisamment de jus pour faire fonctionner les appareils essentiels pendant des heures, en fonction de la sortie réelle. Elle possède également 2 ports USB, deux ports USB-C PD de 100W et un port de charge sans fil 15W.


Voir le bon plan
SSD Kingston A400 480 Go à 29,99 €
29,99 € 40 € -25% @Cdiscount

Cdiscount fait une promotion sur le SSD Kingston A400 480 Go qui passe à 29,99 € alors qu'on le trouve autour de 40 € ailleurs. Il offre des débits de 450 Mo/s en écriture et 500Mo/s en lecture. 


Voir le bon plan
Carte mémoire Samsung 512 Go MicroSDXC Evo Select U3 (130 Mo/s) à 43,02 € livrée
43,02 € 75 € -43% @Cdiscount

Amazon Royaume-Uni fait une promotion sur la carte mémoire Samsung 512 Go MicroSDXC Evo Select U3 qui passe à 32,99 £. Avec la conversion en euro et la livraison en France, elle vous reviendra à 43,02 € livrée. Une bonne affaire pour cette carte que l'on trouve ailleurs à partir de 75 € et qui offre des vitesses de 130 Mo/s en lecture et 110 Mo/s en écriture.  

Elle est idéale pour les téléphones, consoles, caméras et appareils photo 4K. Elle est étanche, anti-choc et résiste aux rayons X et aux champs magnétiques. Elle est garantie 10 ans.


Voir le bon plan
Lego Star wars Casque du Capitaine Rex n°75349 à 52,48 €
52,48 € 69,99 € -25% @Amazon

Amazon fait une promotion sur le Lego Star wars Casque Clone Commander Cody n°75349 qui passe à 52,48 € grâce à un coupon à activer sur la page du produit. On le trouve ailleurs à 69,99 €. Rendez hommage à un valeureux commandant clone de la 501ème légion avec Le casque du Capitaine Rex LEGO Star Wars™ (75349). 854 pièces.


Voir le bon plan
Tournevis de précision (61 pièces, informatique, électronique, téléphone, console) à 14,97 €
14,97 € 29 € -48% @Geekbuying

Geekbuying fait une promotion sur le coffret tournevis de précision (61 pièces) qui passe à 14,97 € au lieu de 29 €. Il contient tous les embouts pour démonter vos appareils électroniques, ordinateurs, téléphones, consoles de jeux, etc. Un arbre flexible est fourni pour atteindre les emplacements difficiles.


Voir le bon plan
Lot de 3 malles de rangement Sundis Locker 60L à 32,90 €
32,90 € 70 € -53% @Amazon

Amazon propose actuellement le lot de 3 malles de rangement Sundis Locker 60L à 32,90 € au lieu de 70 €. Avec couvercle et poignées intégrées. Livraison gratuite.


Voir le bon plan

Sujets relatifs
Dreamweaver impossible de tester index dans IE
editeur TinyMCE grande largeur texte dans page
Texte dans tableau
Bouton RSS automatique dans page annonce Google site
Résultat différent dans Google Trends et Google Keywords Planner
les caractères "é" et "à" se transforment en "?" dans les résultats Google
Logiciel pour remplacer Animation shop
Aller à la ligne dans une info bulle
Changement de compteur dans site Free
Changement de compteur dans mon site Free
Plus de sujets relatifs à tester et remplacer un mot dans une phrase
 > Tous les forums > Forum Forum des Webmasters