PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 03-05-2011 11:40:00

matiou2000
Membre
Inscription : 03-05-2011
Messages : 5

[Résolu]Remplacement d'une partie de variable automatiquement

Bonjour,

Je récupère une variable:

$value_table[$m] = "FS#1234 et autre chose";

Je souhaite remplacer le contenu de ma variable par:


"<a href='http://bugs/?do=details&task_id=1234'>FS#1234</a> et autre chose"

(lien vers la base de bugs)


Le 1234 peut être n'importe quoi (mais que des chiffres de 0000 à 9999)

Actuellement je fais:


if(ereg('FS#',$value_table[$m]))  //create link to Flyspray base
    {
    $FS_numb = trim($value_table[$m],"FS#");
    $FS_link = "<a href='http://bugs/?do=details&task_id=$FS_numb'>FS#$FS_numb</a>";
    $value_table[$m] = $FS_link;
    }
else {}
 

Mon lien est alors valide sur le texte "FS#1234 et autre chose" alors que je souhaite avoir un lien sur "FS#1234" seulement et ne pas impacter "et autre chose".

Comment puis-je faire?
Dois-je utiliser des "regexp"? Si oui comment?

Merci
Matiou2000

Hors ligne

#2 04-05-2011 03:49:51

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu]Remplacement d'une partie de variable automatiquement

Saluton,
TRIM n'est pas suffisant, si tu ne veux conserver que la valeur numérique il faut forcer le typage du contenu de $FS_numb, par exemple en le multipliant par l'élément neutre 1.

<?php
$m=1;
$value_table[$m] = "FS#1234 et autre chose";
if(ereg('FS#',$value_table[$m]))  //create link to Flyspray base
    {
    $FS_numb = trim($value_table[$m],"FS#")*1;
    $le_reste = str_replace("FS#".$FS_numb,"",$value_table[$m]);
    $value_table[$m]=sprintf('<a href="http://bugs/?do=details&task_id=%1$s">FS#%1$s</a>%2$s',$FS_numb,$le_reste);
    }

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 04-05-2011 10:05:56

matiou2000
Membre
Inscription : 03-05-2011
Messages : 5

Re : [Résolu]Remplacement d'une partie de variable automatiquement

Salut,

Super ça marche! Merci beaucoup pour ton aide.

Question bonus:

Si:

 $value_table[$m] = "FS#1234 et autre chose et FS#4567";

ou même:

 $value_table[$m] = "Voir: FS#1234 et autre chose";

et je veux mes 2 liens actifs? Actuellement il ne voit que le premier (et seulement si il est placé en première position).

Merci d'avance.

Matiou2000

Dernière modification par matiou2000 (04-05-2011 10:31:32)

Hors ligne

#4 04-05-2011 20:58:52

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu]Remplacement d'une partie de variable automatiquement

Tu veux dire quelque chose comme ça ?

<?php
$m=1;
$value_table[$m] = "avant FS#1234 et autre chose et FS#4567 encore du texte FS#8901";
if(ereg('FS#',$value_table[$m]))  //create link to Flyspray base
    {
    $tablo=explode("FS#",$value_table[$m]);
    $value_table[$m]='';
    foreach($tablo as $element){
        $FS_numb = $element*1;
        $le_reste = str_replace($FS_numb,"",$element);
        if($FS_numb > 0){
            $value_table[$m].=sprintf('<a href="http://bugs/?do=details&task_id=%1$s">FS#%1$s</a>%2$s',$FS_numb,$le_reste);
            }
        else{
            $value_table[$m].= $le_reste;
            }
        }
    }

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 05-05-2011 10:50:02

matiou2000
Membre
Inscription : 03-05-2011
Messages : 5

Re : [Résolu]Remplacement d'une partie de variable automatiquement

Salut,

Oui tout à fait!

En fait tu décomposes la variable en éléments puis tu appliques la méthode citée plus haut si j'ai bien compris?

J'essaye de l'adapter à la détection d'adresses internet (réaction sur http:// par exemple) et d'afficher Link par exemple, avec un lien vers l'adresse. Cela ne fonctionne pas car la composition est différente. Aujourd'hui je n'arrive qu'à remplacer une adresse par un lien (link) qui pointe à cette adresse. Mais si j'ai autre chose ça ne marche pas.

 $value_table[$m] = "voici une adresse [url]http://toto.fr[/url] et encore cela et même un FS#1234 peut être";
 if(ereg('http://',$value_table[$m])) //create link to internet link
    {
    $value_table[$m] = "<center><a href='$value_table[$m]'>Link</a></center>";
    }

Merci beaucoup pour ton aide.

Matiou 2000

Hors ligne

#6 05-05-2011 13:09:26

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu]Remplacement d'une partie de variable automatiquement

J'avoue ne pas te suivre.
Que veux tu obtenir au juste à partir de cet exemple ?

$value_table[$m] = "voici une adresse [url]http://toto.fr[/url] et encore cela et même un FS#1234 peut être";

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 05-05-2011 17:24:37

matiou2000
Membre
Inscription : 03-05-2011
Messages : 5

Re : [Résolu]Remplacement d'une partie de variable automatiquement

Salut,

Juste un texte "voici une adresse" suivi d'un lien "Link" vers http://toto.fr par ex suivi d'un texte "et encore cela et même un FS#1234 peut être".
Ou alors la même chose que fait ce site (j'écris http://toto.fr et le site crée un lien vers ce site)

Concernant le point d’avant (ton 2ème message) tout est OK à part qu'il ne m'affiche pas les 0 lorsque j'ai un lien FS# dans la ligne (ex: "V2.0.0 voir FS#1234" affichera "V2.. voir FS#1234")

Merci
A+

Dernière modification par matiou2000 (05-05-2011 17:26:58)

Hors ligne

#8 06-05-2011 05:25:12

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu]Remplacement d'une partie de variable automatiquement

matiou2000 a écrit :

Juste un texte "voici une adresse" suivi d'un lien "Link" vers http://toto.fr par ex suivi d'un texte "et encore cela et même un FS#1234 peut être".
Ou alors la même chose que fait ce site (j'écris http://toto.fr et le site crée un lien vers ce site)

Là il faut faire un traitement spécial sur chaque partie de $le_reste, tu dois pouvoir t'en sortir en améliorant mon bout de code.

matiou2000 a écrit :

Concernant le point d’avant (ton 2ème message) tout est OK à part qu'il ne m'affiche pas les 0 lorsque j'ai un lien FS# dans la ligne (ex: "V2.0.0 voir FS#1234" affichera "V2.. voir FS#1234")

Logique et je te laisse corriger, si $element ne commence pas par une valeur numérique, son produit par l'élément neutre 1 donne 0 dans $FS_numb.
Du coup, str_replace($FS_numb,"",$element), remplace tous les 0 par rien ("").


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 06-05-2011 08:41:14

matiou2000
Membre
Inscription : 03-05-2011
Messages : 5

Re : [Résolu]Remplacement d'une partie de variable automatiquement

Salut,

OK et merci pour ton aide.
Comment puis-je clore cette discussion?

A+

Matiou2000

Hors ligne

#10 06-05-2011 10:55:07

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu]Remplacement d'une partie de variable automatiquement

Je vais le faire.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums