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 :

Compter et remplacer une occurrence présente plusieurs fois dans une chaîne de caractères


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Par défaut Compter et remplacer une occurrence présente plusieurs fois dans une chaîne de caractères
    Compter et remplacer une occurrence présente plusieurs fois dans une chaîne de caractères:
    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
    //Permet de recherche plusieurs fois l'occurrence
    while(???){//Je cherche à avoir le résultat de preg_match ici pour rechercher [CR tant que la chaîne est trouvée (bool/int 1)
                    //Châine de cacractères
                    $message = "[CR= TEST01 [CR= TEST02 [CR=";
     
                    //Ce preg_match ne fonctionne pas correctement(à corriger)
    		$ret = preg_match('[CR=',$msg,$matches);
     
    		//Ces 3 lignes fonctionnent bien
    		$msg = str_ireplace('[CR=',$message,$msg);
    		$msg = str_ireplace(']','',$msg);
    		$msg = str_ireplace($msgtrois,'',$msg);
     
    //Fin du while		
    }

  2. #2
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Bonjour

    je n'ai probablement pas compris (ta demande est fort peu explicite).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
     $message = "[CR= TEST01 [CR= TEST02 [CR=";
     
     $count=0;
     
     $newMessage = str_replace("[CR=", "", $message, $count);
     
     echo $newMessage . PHP_EOL . 'Nombre de remplacements: '.strval($count);
    Test en ligne en suivant ce lien: https://onlinephp.io/c/80991

    Le tout est utilisant str_replace et son quatrième paramètre : combien? https://www.php.net/manual/en/function.str-replace.php

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Par défaut
    le code que j'ai actuellement:
    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
            //Permet de recherche plusieurs fois l'occurrence
            while(???){//Je cherche à avoir le résultat de preg_match ici pour rechercher [CR tant que la chaîne est trouvée (bool/int 1)
                            //Châine de cacractères
                            $message = "[CR= TEST01 [CR= TEST02 [CR=";
     
                            //Ce preg_match ne fonctionne pas correctement(à corriger)
            		$ret = preg_match('[CR=',$msg,$matches);
     
            		//Ces 3 lignes fonctionnent bien
            		$msg = str_ireplace('[CR=',$message,$msg);
            		$msg = str_ireplace(']','',$msg);
            		$msg = str_ireplace($msgtrois,'',$msg);
     
            //Fin du while		
            }
    Le code que je veux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            //Permet de recherche plusieurs fois l'occurrence
            while(preg_match('[CR=',$message,$msg)!=0)
    {
                            //Châine de cacractères
                            $message = "[CR= TEST01 [CR= TEST02 [CR=";
     
            		//Ces 3 lignes fonctionnent bien
            		$msg = str_ireplace('[CR=',$message,$msg);
            		$msg = str_ireplace(']','',$msg);
            		$msg = str_ireplace($msgtrois,'',$msg);
     
            //Fin du while		
            }

  4. #4
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Un bonjour et un merci peut-être...

    Et vous n'avez toujours pas explicité (clairement) votre besoin.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Par défaut
    Bonsoir,
    Compter et remplacer une occurrence présente plusieurs fois dans une chaîne de caractères:
    Je cherche la chaîne suivante: [CR= plusieurs fois. De cette manière je remplace le 1er [CR=valeur1] puis le 2nd [CR=valeur2] et ainsi dessuite.
    Le preg_match() devrait me retourner le nombre d’occurrence OU le traitement des occurrence une par une.
    D'où le while pour remplacer [CR= à chaque fois qu'il est présent dans la chaîne $msg

    il me faut un preg_match() correctement paramétré.

    Merci pour votre aide !

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 700
    Par défaut
    vous pouvez récupérer toutes les occurrences en une seule fois avec cette fonction :
    https://www.php.net/manual/fr/functi...-match-all.php
    et il y a le drapeau PREG_OFFSET_CAPTURE pour récupérer la position du texte trouvé.

    si vous avez besoin de plus d'aide pour la suite, donnez nous plus de détails sur ce par quoi vous voulez remplacer ces textes.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/01/2019, 10h57
  2. Réponses: 9
    Dernier message: 25/09/2017, 11h55
  3. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  4. Réponses: 8
    Dernier message: 15/07/2006, 18h59
  5. Remplacer une chaîne de caractères dans une base
    Par Furius dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/10/2005, 23h03

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