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 :

str_replace d'une chaîne avec une partie aléatoire ?


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Points : 106
    Points
    106
    Par défaut str_replace d'une chaîne avec une partie aléatoire ?
    Bonjour,

    (cette fois ci j'ai bien lu la FAQ pour voir si la réponse ne s'y trouvait pas ! lol).

    Bon, voici ce que j'essaye de faire ...
    J'ai ce code ci qui a été généré et qui se trouve dans mon document texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src='/psychostats/images/change_up.gif' border='0' align='absmiddle' height='16' width='14' title='Previous Skill = 1645.98 (diff: 91.96)' alt='skill change'>
    Ce que j'essaye de faire, c'est de remplacer tout le code ci dessus, par une simple partie de code qui est :
    Le seul probleme, c'est que la propriété title se trouvant dans la balise <img > porte une valeur différente à chaque ligne. (car il y a 100 lignes différentes).

    Je me retrouve donc coincé car si je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $saisie = str_replace("<img src='/psychostats/images/change_up.gif' border='0' align='absmiddle' height='16' width='14' title='Previous Skill = 1645.98 (diff: 91.96)' alt='skill change'>"," <b>[+]</b> ",$saisie);
    Il ne va me remplacer que la seule ligne qui possède cette valeur dans la propriété title.

    En gros, il faudrait que j'effectue une manipulation du style qui s'adapte à toutes les lignes :

    <img src='/psychostats/images/change_up.gif' border='0' align='absmiddle' height='16' width='14' title=*********** alt='skill change'>


    De cette manière, la balise title sera toujours remplacée à toutes les lignes.

    Bref, y'a-t-il une astuce avec STR_REPLACE qui permettrait de remplacer des caractères par des * ou des ? comme en C ?

    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Salut,

    les expressions régulières sont tes amies...

    http://fr2.php.net/preg_replace
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  3. #3
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Points : 106
    Points
    106
    Par défaut
    Merci , je vais regarder un peu à ça.

    Perso, pour l'instant j'y ai remédié en incluant le tag "commentaire" en HTML avant et après la valeur aléatoire.

    <!-- -->

    Mais je v fouiner un peu là dedans.

  4. #4
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par bkill
    Salut,

    les expressions régulières sont tes amies...

    http://fr2.php.net/preg_replace
    Et bien alors là ... faut qu'on m'explique ...

    Car j'ai RIEN CAPTE !
    Il n'y a pas de référence vers les formats de ces expressions.

    Tout ce qu'on a, ce sont des exemples, mais là ... j'y comprends rien.

    Alors soit je suis naze crevé, ou bien c'est chinois ....

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $str = 'foo  o';
    $str = preg_replace('/\s\s+/', ' ', $str);
     
    // Affichera 'foo o'
    echo $str;
    ?>
    C'est soit disant pour effacer les espaces en trop !



    GNEEEEE ?

    En décryptant .... / et / sont les balises de fin et début ... apparemment.
    \s pour un espace .... mais le + ? il fait quoi là ? \s\s n'aurait pas suffit ?



    Je suis actuellement en train d'essayer de trouver une façon d'inclure des balise HTML autour d'un texte saisi ....

    En gros voici mon exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Mr. Jacques L. 
    Marié, 3 enfants, possède son site perso : <a href="http://www.lol.com" target="_blank">http://www.lol.com</a> 
    Exerce son métier depuis 10 ans ! 
    bravo a lui , il a de l'avenir ! mdr ...
    Ca c'est un texte saisi a partir d'un formulaire avec un text area de saisie en flash ....

    J'aimerais, par l'intermédiaire de mon fichier PHP, de mettre la balise <a href=" ....>....</a> autour des liens entrés.

    Dans mon fichier PHP, je remplace déja tous les SAUTS de LIGNE par des balises <br> de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $a_renvoyer=str_replace(Chr(13),"<br>",$a_renvoyer);
    Donc là, j'aimerais que lorsqu'il détecte dans ma variable $a_renvoyer un http:// me le remplacer par les balises adéquates.

    En gros, en reprenant mon texte saisi avec le Mr Jacques, on arriverait à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Mr. Jacques L.<br>Marié, 3 enfants, possède son site perso : <a href="<a href="http://www.lol.com" target="_blank">http://www.lol.com</a>"><a href="http://www.lol.com" target="_blank">http://www.lol.com</a></a><br>Exerce son métier depuis 10 ans ! <br>bravo a lui , il a de l'avenir ! mdr ...
    Alors, avec les expressions régulières ... je vois VRAIMENT PAS comment les utiliser ... et surtout, lesquelles ...

    quelqu'un aurait-il une idée ????

    PS : J'ai pensé à obliger d'inclure et dans le texte à saisir pour avoir plus facile à détecter un lien ....
    Le seul soucis, c'est qu'il faut quand même recopier une seconde fois l'adresse ..... une fois dans la balise et une fois juste après ... et juste avant la balise de fin .... donc : <a href="ici">et ici</a>

    Une idée ?

  5. #5
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Points : 106
    Points
    106
    Par défaut
    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
    function make_links_blank( $text )
    {
     return  preg_replace(
         array(
           '/(?(?=<a[^>]*>.+<\/a>)
                 (?:<a[^>]*>.+<\/a>)
                 |
                 ([^="\'])((?:https?|ftp):\/\/[^<> \n\r]+)
             )/iex',
           '/<a([^>]*)target="?[^"\']+"?/i',
           '/<a([^>]+)>/i'
           ),
         array(
           "stripslashes((strlen('\\2')>0?'\\1<a href=\"<a href="file://\\2\&quot;>\\2</a>\\3&#39;:&#39;\\0&#39;" target="_blank">\\2\">\\2</a>\\3':'\\0'</a>))",
           '<a\\1',
           '<a\\1 target="_blank">'
           ),
           $text
       );
    }
    $a_renvoyer = make_links_blank( $a_renvoyer );
    Oups, j'ai pas fini de regardé les exemples des commentateurs ...

    Y'a une personne qui s'est cassé le Q à faire la fonction que je recherchais ... je pensais que ça allait être plus simple que ça quand même...

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Transformer une chaîne avec une regex
    Par Watilin dans le forum Débuter
    Réponses: 2
    Dernier message: 16/08/2011, 11h58
  3. [regexp] Remplacer une chaîne par une chaîne aléatoire
    Par endreillie dans le forum Langage
    Réponses: 9
    Dernier message: 28/10/2010, 12h15
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Réponses: 4
    Dernier message: 15/10/2009, 13h33

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