× 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 PowerOak EB240 2400Wh/1000W à 949 €
949 € 1800 € -47% @Geekbuying

Geebuying fait une belle promotion sur la station de charge portable Bluetti PowerOak EB240 2400Wh/1000W à 949 € grâce au code promo 7GUFQ4AF. On la trouve ailleurs à partir de 1800 €.

Cette Power Station offre une capacité de 2400Wh et deux sortie AC de 1000W (1200W en crète) à onde sinusoïdale pure. Elle peut alimenter des appareils tels que TV, réfrigérateurs, ordinateurs, des drones, etc. En tant que batterie au lithium de secours de 2400 Wh, 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 4 ports USB, un ports USB-C PD de 45W.

La batterie peut être rechargée via l'adaptateur secteur fourni ou des panneaux solaires. 

Très pratique comme station d'énergie autonome en voyage, camping ou pour parer à des coupures électriques.

Notez que l'expédition se faire depuis un entrepôt européen. Elle sera donc rapide et sans risque de douane.


Voir le bon plan
Clé USB WiFi N150 Nano TP-Link à 6,99 €
6,99 € 9,95 € -30% @Amazon

Amazon fait une offre éclair sur la clé USB WiFi TP-Link N150 Nano qui passe à 6,99 € alors qu'on la trouve habituellement à partir de 9,95 €. Cette micro clé USB vous permettra d'ajouter le WiFi (jusqu'à 150 Mbit/s) à un ordinateur qui en est dépourvu.


Voir le bon plan
Boitier PC Corsair 4000D Airflow avec fenêtre à 104,80 €
104,80 € 139 € -25% @Cdiscount

Cdiscount fait une promotion sur le boitier PC Corsair 4000D Airflow avec fenêtre à 104,80 € au lieu de 139 € ailleurs. Ce boitier moyen Tour propose un câble management optimisé afin de favoriser un montage propre et rapide. Les câbles ne gênent pas la circulation du flux d'air et l'aspect visuel reste soigné. 2 ventilateurs inclus permettent un refroidissement parfait de la tour et de ses composants. En outre, les emplacements supplémentaires pour ventilateurs et systèmes de watercooling AIO offrent une grande polyvalence ainsi qu'une belle évolutivité au boîtier. 


Voir le bon plan
SSD Crucial P3 Plus 2 To (NVMe, PCIe 4.0, M.2, 5000 Mo/s) à 135,99 €
135,99 € 190 € -28% @Amazon

Amazon fait une promotion sur le SSD Crucial P3 Plus 2 To (NVMe, PCIe 4.0, M.2, 5000 Mo/s) qui passe à 135,99 € au lieu de 190 €. 

Ce SSD offre des vitesses de lecture séquentielle allant jusqu’à 5000 Mo/s (4200 Mo/s en écriture). Il est garanti 5 ans.


Voir le bon plan
SSD PNY CS900 2 To à 99,89 €
99,89 € 145 € -31% @Amazon

Amazon fait une promotion sur le SSD PNY CS900 2 To qui passe à 99,89 € alors qu'on le trouve ailleurs à partir de 125 €. Ce SSD offre des vitesses d'écriture de 515 Mo/s et de lecture à 550 Mo/s. Il est garanti 3 ans.


Voir le bon plan
Ecran incurvé Lenovo 27 pouces G27C-30 (Full HD, VA, 165 Hz, FreeSync) à 179,99 €
179,99 € 230 € -22% @Amazon

Amazon propose actuellement l'écran 27 pouces Lenovo G27C-30 à 179,99 € alors qu'on le trouve ailleurs à plus de 230 €. Cet écran dispose d'une dalle incurvé Full HD (1920x1080) à bords fins, avec un temps de réponse de 1 ms et un rafraichissement de 165 Hz. Il possède des entrées DP, HDM et intègre des haut-parleurs. Il est compatible Freesync.  


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