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

Langage PHP Discussion :

Comment remplacer une partie de chaine ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Par défaut Comment remplacer une partie de chaine ?
    Bonsoir,

    J'ai une chaine de caractères composée 3 morceaux
    collés les uns aux autres.
    - chaine de gauche --> longueur variable
    - chaine du milieu --> Date longueur fixe
    - chaine de droite --> chaine vatiable de longueur fixe

    exemple : sdfgsdfgsdfgsdfgsdfgsfgs2009-06/chainefixe

    je voudrais remplacer dans cette chaine 2009-06
    par 2007-11.
    mais de la chaine 2009-06 seule la partie 20 ne change
    pas et ne se retrouve nulle part ailleurs dans la chaine complète.

    J'ai bidouillé avec la série des STR... mais sans rédultats !

    Un petit conseil SVP

  2. #2
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Par défaut
    la chaine est donc
    str= 'sdfgsdfgsdfgsdfgsdfgsfgs2009-06/chainefixe';
    si le / final avant "chainefixe" est fixe également
    on peut donc supputer une variable
    $fin_a_trouver = "chainefixe" + 1;

    si la structure est toujours
    .....1234-12/chainefixe
    on peut supputer 2 variables
    $début_a_trouver = $fin_a_trouver -7;
    $longueur = 7;

    le segment de string sur lequel on doit travailler devrait donc correspondre à
    $rest = substr(str, $longueur, -$fin_a_trouver);

    1 chaine
    3 bornes

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Par défaut
    OK, j'avais déjà essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $popo= str_replace(r20', $remp, $don_1);
    ou $remp = "2007-11"

    mais cela remplace la chaine a partir de 20

    2009-06/ devient r2007-11-06/

    Quelle serai la bonne syntaxe en employant : substr(str, ?

  4. #4
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Par défaut
    aucune idée de ce que veux dire
    $popo= str_replace(r20', $remp, $don_1);
    ça veut dire quoi ?
    r20'

    une chose me semble certaine :
    pas question de remplacer quoi que ce soit au vol dans une chaîne que l'on ne maîtrise pas
    mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

    str_replace() retourne une chaîne ou un tableau, dont toutes les occurrences de search dans subject ont été remplacées par replace .
    Comment être certain que "search" ne se trouve pas dans la première partie ?
    genre
    sdfgsdfgs2009-06dfgsdfgsdfgsfgs2009-06/chainefixe

    les seules données que tu sembles contrôler se situent en fin de chaine :
    http://www.php.net/manual/fr/function.substr.php

    $rest = substr("abcdef", -3, -1); // retourne "de"

    et donc si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $str = 'sdfgsdfgs2009-06dfgsdfgsdfgsfgs2009-06/chainefixe'
    $fin_a_trouver = "chainefixe" + 1; // 
    $début_a_trouver = $fin_a_trouver +7; // 
     
    $le_debut = substr($str, , -$début_a_trouver,);
    $rest = substr($str, -$début_a_trouver, -$fin_a_trouver);
    les manipulation désirées sur $rest
    genre $rest =  str_replace('xx', 'yy',  rest);
    $str = $le_debut.$rest;
    non ?

  5. #5
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Par défaut
    $le_debut = substr($str, , -$début_a_trouver,);

    oublié le zéro

    $le_debut = substr($str, 0, -$début_a_trouver,);

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Par défaut
    Merci cholopat,

    Je suis en train de tester

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

Discussions similaires

  1. [E-02] Remplacer une partie de chaine de caractère par une autre
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/09/2008, 22h19
  2. Réponses: 5
    Dernier message: 24/02/2006, 10h12
  3. [C++] Comment copier une partie d'une chaine?
    Par irnbru dans le forum C++
    Réponses: 11
    Dernier message: 25/10/2005, 15h36
  4. Remplacer une PARTIE de chaine de caractères dans un champ
    Par Turlututuchapopointu dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/08/2005, 11h57
  5. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

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