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 :

chaine commencant par X et qui fini par Y


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    DDD
    Inscrit en
    Février 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DDD

    Informations forums :
    Inscription : Février 2003
    Messages : 55
    Points : 38
    Points
    38
    Par défaut chaine commencant par X et qui fini par Y
    Bonjour,

    Comment trouver dans une chaîne, une sous chaîne qui commence par ... et se termine par ... ?

    J'ai essayé les 2 solution suivante sans résultats :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    $contents="<span>Lorem</span> ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
    aliquyam erat, sed diam voluptua.";
     
    echo(eregi_replace("<span>.</span>","<span style='background: green'>\\1</span>",$contents));
    echo('<br />')
    echo(eregi_replace("(^<span>)(</span>$)","<span style='background: yellow'>\\1</span>",$contents));

    Mercdi d'avance.

  2. #2
    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,
    Tu n'etais pas loin !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?
    $contents="<span>Lorem</span> ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
    aliquyam erat, sed diam voluptua.";
     
    echo(eregi_replace("<span>(.+)</span>","<span style='background: green'>\\1</span>",$contents));
    ?>
    Et j'obtiens le surlignage de Lorem

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

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

  3. #3
    Nouveau membre du Club
    Profil pro
    DDD
    Inscrit en
    Février 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DDD

    Informations forums :
    Inscription : Février 2003
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Je n'arrive pas à comprendre pourquoi le code suivant ne fonctionne pas :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
    	<title></title>
    </head>
    <body>
     
    <?php
    ob_start();
    // tout ton code PHP, renvoi de HTML, ....
    ?>
     
    <span>Lorem</span> ipsum <a href='#'>dolor</a> sit amet, <span>consetetur sadipscing elitr</span>, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna 
    aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus 
    est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, 
    no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd 
    gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
     
    <?php
    $contents = ob_get_contents();
    ob_end_clean();
     
    $mot='dolor';
    $contents1=eregi_replace("($mot)","<span style='background: green'>\\1</span>",$contents);
    $contents2=eregi_replace("($mot)[^(<span>(.*)</span>)]","<span style='background: yellow'>\\1</span>",$contents);
    $contents3=eregi_replace("($mot)[^(<a href='#'>(.*)</a>)]","<span style='background: yellow'>\\1</span>",$contents);
     
    echo($contents1);
    echo('<hr />');
    echo($contents2);
    echo('<hr />');
    echo($contents3);
    echo('<hr />');
    ?>
     
    </body>
    </html>
    Dans l'affichage contents2, des lettres disparaissent mystérieusement.
    Dans l'affichage contents3, cela ne fonctionne pas !!!

    Je n'arrive pas à trouver les erreurs...

    Merci d'avance.

  4. #4
    Nouveau membre du Club
    Profil pro
    DDD
    Inscrit en
    Février 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DDD

    Informations forums :
    Inscription : Février 2003
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Personne n'a une solution à me proposer ?

    Pour compléter la demande voici le but de mon projet :

    Avant d'envoyer une page dynamique, je balaye le code html (bufférisé) afin de rechercher certains mots dans la page qui serait référencés dans un dictionnaire.
    Si Je trouve un tel mot, je voudrais lui assigner un lien vers le dico (en un mot l'encadrer d'une balise <a href="...">...</a>). Le problème c'est qu'il faut que je ne traite pas les mots qui sont déjà entre des balises <a></a> sinon il y aura une double imbrication. De même je ne dois pas extraire les mots dans une balise (img src="..."... /> car si le mot cherché se trouve dans sr="...", cela va poser des problèmes.
    Cela me semble pas si compliqué que cela, et je pensais m'en sortir avec les expressions régulières, plutôt que de parser le code en XML.
    Bon en espérant avoir été claire... si quelqu'un a une solution à me proposer.
    Merci d'avance !

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Citation Envoyé par oamram
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eregi_replace("($mot)[^(<span>(.*)</span>)]",...
    Ca ne fonctionne absoluement pas comme ca !

    1ere chose : passer a preg_replace. La syntaxe te paraitra peut etre plus étrange, mais c'est beaucoup mieux (plus rapide) et surtout tu as acces a des modifications d'expressions qui te seront necessaires ici pour gerer les balises imbriquées

    Ensuite, si tu veux recuperer ce qui est contenu entre 2 balises, il faut faire qqchose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... = preg_replace("#<balise>([^<]+)</balise>#U", ..., ...);

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/04/2009, 14h13
  2. [Smarty] tester une chaine commence par 'mod1' en Smarty
    Par mouss4rs dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 09/03/2009, 15h39
  3. [REGEXP] Sous chaine commene par et fini par...
    Par lionel69 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 02/05/2006, 15h45
  4. Réponses: 9
    Dernier message: 13/04/2006, 11h46
  5. Réponses: 17
    Dernier message: 24/10/2005, 20h05

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