Tracker une chaine de caractère précise pour en faire un lien ?

Tracker une chaine de caractère précise pour en faire un lien ? - PHP - Programmation

Marsh Posté le 18-01-2006 à 17:49:50    

Salut à tous.
 
Voila je suis au devant d'un petit problème pour mon intranet au travail. J'ai développé un module pour soumettre et gérer des bugs. Dans le formulaire de saisie j'ai plusieurs champs texte. J'aimerai que dés que quelqu'un utilise la syntaxe BR#XXXXX (Ex BR#10235, BR#8000 ....) le transformer en lien hypertexte. Pour ce lien j'ai besoin du numéro.
 
Je n'ai pas de problème pour sauver des liens ni pour les afficher. Mon souci residé dans le fait d'extraire cette chaine d'une autre la transformer en lien puis la réinjecter dans la chaine de départ ?  
 
Je peux chercher les BR#, ce n'est pas trop dur mais comment lui dire BR#XXXXX ou BR#XXXX ???
 
 
Merci de votre aide
(Une solution  en dernier recours ... et d'aider à la création de lien depuis le formulaire)

Reply

Marsh Posté le 18-01-2006 à 17:49:50   

Reply

Marsh Posté le 18-01-2006 à 17:57:12    

preg_replace('@BR#[0-9]{4,5}@', '<a href="...">$1</a>');  
 
?
 
(Là j'ai hypothésé qu'il y avait exactement 4 ou 5 chiffres après BR, donc à adapter.)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-01-2006 à 18:08:58    

je te remercie.
Je te confirme qu'il y a 4 ou 5 chiffre sur.
 
Je teste ça. :)

Reply

Marsh Posté le 18-01-2006 à 18:20:21    

@\bBR#[0-9]{4,5}\b@ pourrait être plus approprié.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-01-2006 à 18:28:58    

Dans les 2 cas ca ne marche pas. Il va falloir que je commande un bouquin sur ces expressions régulières car c'est vraiment puissant.
 
Pour le moment je teste comme ça :
$test = "un test pour générer des liens hypertextes #BR11145";
 
$test2 = preg_replace("@BR#[0-9]{4,5}@", "<a href=\"url.php?idbug=$1\">$1</a>", "$test" );  

Reply

Marsh Posté le 18-01-2006 à 18:29:33    

Faut savoir, le # est avant ou après BR ? -_-


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-01-2006 à 18:33:07    

Sinon c'est $0 et pas $1, là, en fait.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-01-2006 à 18:35:33    

sielfried a écrit :

Faut savoir, le # est avant ou après BR ? -_-


 
 
Non apres c'est BR# + 4 ou 5 chiffres

Reply

Marsh Posté le 18-01-2006 à 18:37:40    

Donc forcément ça va rien remplacer si tu testes sur :
 
$test = "un test pour générer des liens hypertextes #BR11145";  


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-01-2006 à 18:40:19    

oulalal !!
Désolé !! Je crois que je vais rentrer chez moi la je ne vois plus rien.
 
Encore merci de ton aide ca marche nickel! !!!

Reply

Marsh Posté le 18-01-2006 à 18:40:19   

Reply

Marsh Posté le 19-01-2006 à 16:09:03    

Ca marhe toujours. Mainteant j'ai le problème inverse. Lors de la modification de mon formulaire je raffiche le contenu de la base. Je me retrouve avec la balise <a href ..... </a> complete en mode modification.
 
J'ai essayé en vain d'écrire une expression pour ne garder que mon BR#XXXXX.
 
Le but est de virer le <a href ........> dans un premier temps puis le </a> dans un deuxième temps.  Tu as une solution sielfried ??

Reply

Marsh Posté le 19-01-2006 à 16:40:18    

Code :
  1. $test = preg_replace('@<a href="url.php\?idbug=(BR#[0-9]{4,5})">\1</a>@', '$1', $test);


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 19-01-2006 à 17:08:58    

sielfried a écrit :

Code :
  1. $test = preg_replace('@<a href="url.php\?idbug=(BR#[0-9]{4,5})">\1</a>@', '$1', $test);



 
 
Je n'y arrive pas. J'arrive à supprimmer des parties de la chaine mais pas la chaine entière.

Reply

Marsh Posté le 19-01-2006 à 17:26:57    

Odin34 a écrit :

Je n'y arrive pas. J'arrive à supprimmer des parties de la chaine mais pas la chaine entière.


 
J'ai pas dû comprendre ce que tu veux alors.
 
Ce preg_replace "annule" les liens, c'est ce que j'ai compris. Ca vire la balise html et ne laisse que le BR#XXXX.
 
Qu'est-ce qui ne va pas ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 19-01-2006 à 17:30:17    

Oui c'est bien cela que je veux mais ca ne marche pas. Ma chaine d'arrivée est identique à celle de départ.
 

Reply

Marsh Posté le 19-01-2006 à 17:33:52    

Code :
  1. <?php
  2. $test = 'blabla BR#11145 blabla BR#1541 blabla';
  3. echo $test, "\n\n";
  4. $test = preg_replace('@\bBR#[0-9]{4,5}\b@', "<a href=\"url.php?idbug=$0\">$0</a>", $test); 
  5. echo $test, "\n\n";
  6. $test = preg_replace('@<a href="url.php\?idbug=(BR#[0-9]{4,5})">\1</a>@', '$1', $test); 
  7. echo $test;
  8. ?>


 
me sort :

Citation :


blabla BR#11145 blabla BR#1541 blabla
 
blabla <a href="url.php?idbug=BR#11145">BR#11145</a> blabla <a href="url.php?idbug=BR#1541">BR#1541</a> blabla
 
blabla BR#11145 blabla BR#1541 blabla

Message cité 1 fois
Message édité par sielfried le 19-01-2006 à 17:34:28

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 19-01-2006 à 17:51:37    

sielfried a écrit :

Code :
  1. <?php
  2. $test = 'blabla BR#11145 blabla BR#1541 blabla';
  3. echo $test, "\n\n";
  4. $test = preg_replace('@\bBR#[0-9]{4,5}\b@', "<a href=\"url.php?idbug=$0\">$0</a>", $test); 
  5. echo $test, "\n\n";
  6. $test = preg_replace('@<a href="url.php\?idbug=(BR#[0-9]{4,5})">\1</a>@', '$1', $test); 
  7. echo $test;
  8. ?>


 
me sort :

Citation :


blabla BR#11145 blabla BR#1541 blabla
 
blabla <a href="url.php?idbug=BR#11145">BR#11145</a> blabla <a href="url.php?idbug=BR#1541">BR#1541</a> blabla
 
blabla BR#11145 blabla BR#1541 blabla



 
De mon coté aussi.
Par contre lors que j'applique tout ça dans mon forumlaire ca ne marche plus. Les données extraites de la base doivnet être modifiées entre temps.
 
J'ai réussi à obtenir ce que je voulais en utilisant la fonction strip_tags qui permet de faire sauter les balises html et php. Je me retrouve donc avec ce que je veux.
 
J'applique donc ton expression à la sauvegarde et strip_tags à la modification.
 
En tout cas je te remercie vraiment de ton aide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed