× 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
10 € de réduction dès 50 € d'achats sur Amazon Belgique
-10 € @Amazon Belgique

Pour fêter les offres de printemps sur la nouvelle version Belge d'Amazon, vous bénéficiez de 10 € de réduction à partir de 50 € d'achats sur les produits vendus et expédiés par Amazon avec le code SPRING10.

Notez qu'Amazon Belgique ne livre qu'en Belgique. Une offre réservée donc aux Belges ou aux frontaliers qui peuvent se faire livrer en relais colis en Belgique.


Voir le bon plan
Clavier sans fil Logitech Wireless Desktop K400 Plus avec pavé tactile à 29,99 €
29,99 € 39,99 € -25% @Amazon

Amazon fait une promotion sur le clavier sans fil Logitech Wireless Desktop K400 Plus à 29,99 €. Ce clavier sans fil dispose d'un large pavé tactile de 9 cm avec navigation multipoint pour un pointage à un doigt simplifié et un défilement vertical à deux doigts. Idéal pour contrôler votre ordinateur à distance, s'il est connecté à une TV par exemple. On le trouve ailleurs à partir de 39,99 €. 


Voir le bon plan
Montre connectée Amazfit GTS à 49,90 €
49,90 € 86,99 € -43% @Amazon

Amazon fait une promotion sur la montre connectée Amazfit GTS qui passe à 49,90 € alors qu'on la trouve ailleurs à partir de 86,99 €. Elle possède un écran HD de 1,65 pouces, est étanche 50 mètres (compatible natation), prend en charge 12 modes d’exercices (course, marche, vélo, nage, escalade, ski, ...), bénéficie d'une autonomie de 14 jours (46 jours en économie d'énergie), d'un tracking GPS et assure le suivi du rythme cardiaque. 


Voir le bon plan
Casque Sennheiser HD 599 à 79,99 €
79,99 € 105 € -24% @Amazon

Amazon fait une belle vente flash sur le très bon casque Sennheiser HD 599 qui passe à 79,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 105 €. Ce casque fermé réduit le bruit ambiant. Il est idéal pour vos déplacements à l'extérieur. Il est compatible avec pratiquement toutes les sources audio y compris les téléphones portables, les amplis, les tablettes et les ordinateurs grâce à ses deux câbles détachables fournis : un câble de 3 mètres avec une fiche jack de 6,35 mm & un câble de 1,2m avec télécommande à un bouton et fiche jack de 3,5 mm.


Voir le bon plan
Souris sans fil Logitech G305 à 24,99 €
24,99 € 50 € -50% @Amazon

Amazon fait une belle promotion sur la nouvelle souris sans fil Logitech G G305 qui passe à 24,99 € alors qu'on la trouve ailleurs autour de 50 €. Cette souris vous offre des performances sans fil de niveau professionnel et une fiabilité inégalée surpassant même certaines des meilleures souris gaming filaire. Dotée du capteur HERO, vous allez connaitre une précision exceptionnelle grâce à sa sensibilité pouvant aller jusqu'à 12 000 dpi.


Voir le bon plan
Multiprise Parafoudre Belkin 8 prises, 2 ports USB 2.4A et cordon de 2 mètres à 24,99 €
24,99 € 40 € -38% @Amazon

Amazon fait une promotion sur la multiprise Parafoudre Belkin BSV804ca2M qui passe à 24,99 € livrée gratuitement alors qu'on la trouve habituellement autour de 40 €. Cette multiprise possède 8 prises, 2 ports USB 2,4 A et un cordon de 2 mètres. Elle offre une protection contre les surtensions. 


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