IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Formatage de chaine


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2011
    Messages : 26
    Par défaut Formatage de chaine
    Bonjour, je viens quérir un peu d'aide concernant le formatage de chaine de caractères.
    Je récupéré un flux RSS que je parse et que j’intègre dans une base de données. Il s'agit de fiche produits. La chaine récuperée pour le titre de mon article est de ce format la :
    Plancha gaz Eno Mania 60 - Prix discount 444,00 € - Plancha et grill Eno - Super10Count
    Ceci est stocké dans une variable et j'aimerai enlevé dans cette chaîne tout ce qui ne concerne pas le nom du produit à savoir pour cette exemple "Mania 60".
    Voici un comment est constitué mon code (enfin la partie qui me sert à formater mes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    foreach($doc->channel->item as $item)
    		{
    			$valeur = "";
    			$chaine = $item->title;
    			if(strpos($chaine, "mania 45"))
    			{
    				$valeur = "mania 45";
    			}
    			else
    			{
    				$valeur = utf8_decode($chaine);	
    			}
    			$site = explode('/',$item->link);
    			$explode_price = explode(".",$item->description);
    			$prix =  substr($explode_price[3], -4);
    			$sql = "insert into produits(title ,site, link, prix) values ('".$valeur."','".$site[2]."','".$item->link."','".$prix."')";
    Si quelqu'un pouvait me mettre sur la voie afin que je puisse finir (car il me reste plus que ça), ce serait très gentil.

    Cordialement.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Quelle est la règle qui permet de dire qu'on retire "Mania 60" et pas autre chose ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2011
    Messages : 26
    Par défaut
    Je ne sais pas du tout, entre les str_replace, preg_replace et autre je suis un peu perdu, je veux juste extraire la chaine "mania 60" de la chaine initiale et ceci dans une boucle foreach.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Certes mais pourquoi on retire "Mania 60" et pas "Eno Mania 60" par exemple.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2011
    Messages : 26
    Par défaut
    En fait, cela correspond au model de la marque eno, je souhaite afficher uniquement les model, qui on des déclinaisons (45,60,75). Et ainsi rendre un affichage propre en base de données et en affichage. Je voudrais éviter de me retrouver avec des lignes comme celle dite plus haut par exemple.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Certes mais comment ton programme va savoir quel bout il retire dans la chaine ?
    On peut retirer tous les "mania xx" mais je suppose que tu as des cas multiples.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2011
    Messages : 26
    Par défaut
    La boucle foreach me permet de parcourir chaque ligne de mon XML source et je voudrai faire un système qui dirait que pour chaque ligne lue, il retire les chaines de caractères qui ne m’intéressent pas. j'ai 6 modèles de planchas en fait, mon xml contient un peu moins de 100 planchas(flux tiré d'un comparateur de prix) et je voudrai nettoyer chaque ligne.
    Par exemple :
    Plancha tradition 45 ENO SG.TRAD45 - Planchas Gaz - Planchas Gaz
    deviendrai "tradition 45"
    ou
    Plancha ENO ?gaz MANIA 60 TRADITIONNELLE
    deviendrai "mania 60"

    ces lignes d’exemples sont celles qui ressortent de la base de données.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2011
    Messages : 26
    Par défaut resolu
    Merci pour votre attention, je me suis sans doute compliqué la vie ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $produits = array("mania 45", "mania 60", "mania 75", "tradition 45", "tradition 60", "tradition 75", "elektra 60");
    			$chaine = $item->title;
    			if(stripos($chaine, "mania 45" )){$chaine = "Plancha ".$produits[0];}
    Simplement... me reste plus qu' a faire le tour de mes cas.
    Merci

  9. #9
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    Malheureusement, tu n'as pas énormément d'autres solutions pour ton cas, puisque la donnée que tu recherches n'est pas séparée clairement du reste du texte.
    Attention toutefois : stripos te renvoie la position du 1er caractère de la sous-chaîne cherchée dans la chaîne. Si ce premier caractère correspond au début de la chaîne, stripos te renverra 0, qui sera considéré comme faux par ton test !
    Il faut donc forcer explicitement la comparaison de type pour éviter tout bug :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (FALSE !== stripos($chaine, "mania 45" ))
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formatage de chaine avant insertion dans BDD MySQL
    Par kdson dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 18/01/2008, 01h01
  2. [RegEx] Problème de formatage de chaine de caractère
    Par lecra dans le forum Langage
    Réponses: 5
    Dernier message: 29/05/2007, 14h17
  3. formatage de chaine
    Par julino dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/02/2007, 17h28
  4. [Tableaux] formatage de chaine
    Par renaud26 dans le forum Langage
    Réponses: 17
    Dernier message: 15/06/2006, 21h44
  5. Formatage du chaine suivant un masque
    Par AlexB59 dans le forum Langage
    Réponses: 1
    Dernier message: 07/02/2006, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo