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 :

traitement d'une chaine


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut traitement d'une chaine
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $lemot = 'mot';
    $lachaine = "ma phrase contient un mot mais le MoT peut être répété, et parfois le mOt n'est pas écris pareil";
    Le but vous l'avez compris, c'est de trouver $lemot dans $lachaine et de le remplacer par le mot tel qu'il est d'origine et non pas par $lemot, exemple <b>mOt</b> parce que $lemot n'est pas écrit pareil.

    Merci pour vos conseils.

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par ctrl+z Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $lemot = 'mot';
    $lachaine = "ma phrase contient un mot mais le MoT peut être répété, et parfois le mOt n'est pas écris pareil";
    C' est comme souvent un i devant le nom de la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $lachaine = "ma phrase contient un mot mais le MoT peut être répété, et parfois le mOt n'est pas écris pareil";
     
    $lachaine=str_ireplace("mot","mot",$lachaine);
     
    echo $lachaine;

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Si c'était si simple j'aurais pas posé la question
    car un ireplace ne replace pas MoT telle quel mais le remplace par mot au lieu de MoT

  4. #4
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Dans ce cas tu peux faire un strtolower() sur ton mot et ta phrase.
    Cette fonction passe tout les caractères de la chaine en minuscule, et donc pu de problème de casse.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    je crois que vous comprenez pas le pb, si Mot est écrit MoT, il faut le remplacer par MoT et non par mot, c-a-d tel qu'il était d'origine dans la phrase. Pour le rechercher dans le phrase, on utilisent $lemot

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par ctrl+z Voir le message
    Si c'était si simple j'aurais pas posé la question
    car un ireplace ne replace pas MoT telle quel mais le remplace par mot au lieu de MoT

    Ce serait intéressant si tu veux de l' aide de parler Français, je relis ta question et quand je lis que tu veux que MoT soit remplacé par MoT

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    c'est ça mais pour trouver MoT j'utilise la vrariable $lemot.

  8. #8
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par ctrl+z Voir le message
    c'est ça mais pour trouver MoT j'utilise la vrariable $lemot.
    Quel intéret ? et surtout que contient cette variable

    Ce qui serait bien, c'est de dire
    1) ce que tu as
    2) ce que tu veux obtenir
    3) et peut' étre pourquoi .... (si ça aide a comprendre)

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    c'est clair $lemot est une variable contenant un mot, exemple :
    dans une phrase, je recherche $lemot et si je trouve BoNJoUr, je le remplace par <b>BoNJoUr</b> et non par $lemot, ce que fait ireplace n'est don pas interressant.

    y'a rien d'autre à comprendre...

  10. #10
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par ctrl+z Voir le message
    c'est clair $lemot est une variable contenant un mot, exemple :
    dans une phrase, je recherche $lemot et si je trouve BoNJoUr, je le remplace par <b>BoNJoUr</b> et non par $lemot, ce que fait ireplace n'est don pas interressant.

    y'a rien d'autre à comprendre...
    Whaou OK reçu 100% a mon avis ça doit' étre jouable, je vais pioché dans ma doc, et d'ici ce soir je te tiens au courant !!

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    simpa le but c juste de récupérer le mot tel qu'il est dans la phrase et de le replacer en gras => balise <b></b>.

  12. #12
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Le truc c'est que tu veux modifier une valeur par elle même encadrée d'une balise, en faisant une recherche insensible à la casse.

    C'est plus ou moins impossible en l'état.
    Une solution serait d'aller rechercher d'abord la chaine elle même et donc de la récupérer avec sa casse grâce à son "image" en minuscule, puis de remplacer cette chaine par ce que tu veux.

    Je sais pas si je suis super clair mais bon, le problème est assez tordu donc l'explication l'est aussi :p

    Voilà une solution viable pour ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $chaine = "on veut chercher a mettre BoNJoUR en gras et tout et tout";
    $lemot = "bonjour";
    echo $chaine . "<br/>";
    $newmot = substr(stristr($chaine, $lemot), 0, strlen($lemot));
    echo str_replace($newmot, "<b>$newmot</b>", $chaine);
    ?>

  13. #13
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par ctrl+z Voir le message
    simpa le but c juste de récupérer le mot tel qu'il est dans la phrase et de le replacer en gras => balise <b></b>.
    Alors tu va rire tu connais mon gout pour les i alors tu peux jouer avec ma piste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $pos = stripos($taphrase, $lemot );
    if( $pos===false) {}
    donc avec un strlen de $lemot tu peux l'extraire et la faire un replace

    NOTA tu sais que === permet si tu est false mais de rang 0 d' étre OK !

  14. #14
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Huhu pwned de 1min FoxLeRenard :p

  15. #15
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Momodedf Voir le message
    Huhu pwned de 1min FoxLeRenard :p
    En plus j'avais pas vu

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Sauf que si ça contient plusieurs fois lemot ça fonctionne plus mais merci pour la piste...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $chaine = "on veut chercher a mettre BoNJoUR en gras et bonJoUr tout et tout";
    $lemot = "bonjour";
    $n = substr_count(strtolower($chaine), $lemot);
    for ($i=0;$i<$n;$i++) {
    echo $chaine . "<br/>";
    $newmot = substr(stristr($chaine, $lemot), 0, strlen($lemot));
    echo "<br>".str_replace($newmot, "<b>$newmot</b>", $chaine);
    }
    ?>

  17. #17
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    Un truc comme ca peut-etre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $chaine = "on veut chercher a mettre BoNJoUR en gras et bonJoUr tout et tout";
    $lemot = "bonjour";
    $chaine=preg_replace("/($lemot)/i",'<b>$1</b>',$chaine);
    echo $chaine;
    ?>
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Simple curiosité que veut dire le paramètre $1 ?

    $chaine=preg_replace("/($lemot)/i",'<b>$1</b>',$chaine);

  19. #19
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    $1 (qui curieusement doit être entre guillemets simples, en tout cas chez moi) signifie la capture de ce ce qui est entre parenthèses dans l'expression régulière, donc telle qu'elle est.

    Concrètement (parce que même moi, j'ai du mal a comprendre ce que je viens d'écrire !!) :
    "/$lemot/" -> je cherche cette ocurrence
    "/($lemot)/"-> je cherche cette ocurrence et je la stocke dans $1
    "/($lemot)/i"-> je cherche cette ocurrence, quelque soit la casse et je la stocke dans $1

    Un peu plus clair ? (la pédagogie et moi, toute une histoire....)

    S.
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    $1 voila ce qui me manquait

    mille fois merci

    si ya de doc sur Ce sujet je suis prenant

Discussions similaires

  1. [FLASH 8] traitement d'une chaine de caractère
    Par KaiN_974 dans le forum Flash
    Réponses: 17
    Dernier message: 12/06/2006, 11h42
  2. Réponses: 2
    Dernier message: 21/12/2005, 16h23
  3. Traitement d'une chaine
    Par Kerod dans le forum Langage
    Réponses: 9
    Dernier message: 11/09/2005, 00h55
  4. traitement d'une chaine de caractère
    Par mohamed dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/12/2004, 17h45
  5. Réponses: 3
    Dernier message: 21/06/2004, 11h20

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