Probleme avec les regex

Probleme avec les regex - PHP - Programmation

Marsh Posté le 10-06-2003 à 11:03:04    

voila j'ai mon propre systeme de balisage dans un texte pour les liens : [URL] www.monsite.fr [/URL]
 
je voudrais transformer ca en <a href="www.monsite.fr">www.monsite.fr</a>
 
 
je sais pas comment faire et j'ai rien trouvé sur le net pour faire ca... et pour comprendre les  expressions regulieres, dur dur !


---------------
Quoi ? 2.21 Gigowatts ! Mais seul un éclair peut délivrer une telle puissance !
Reply

Marsh Posté le 10-06-2003 à 11:03:04   

Reply

Marsh Posté le 10-06-2003 à 13:45:03    

Au lieu de t'embeter avec les expressions régulières, essayes plutot de voir du coté de la fonction str_replace.
Ca me semble plus adapté à ce que tu veux faire.


Message édité par Zirtukob le 10-06-2003 à 13:45:38
Reply

Marsh Posté le 10-06-2003 à 14:59:39    

Essaye un truc dans le genre:

Code :
  1. preg_replace("/\[URL\](.*?)\[\\URL\]/", "<a href=\".\\1."\">".\\1."</a>", $tonTexte);

Reply

Marsh Posté le 07-07-2003 à 17:15:55    

ça m'intéresse aussi !
et le dernier code ne fonctionne pas !
 
est-ce que qqun aurait un code sûr
(j'essaie de trouver ce qui ne va pas...)


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 07-07-2003 à 17:19:50    

pour quelque chose comme [URL ]www.tonsite.com[/URL ]

Code :
  1. $string = preg_replace("/\[URL\](.*?)\[\/URL\]/s", "<a href=\"$1\">$1</a>",


pour quelque chose comme [URL=www.tonsite.com ]tonsite[/URL ]

Code :
  1. $string = preg_replace("/\[URL=(.*?)\](.*?)\[\/URL\]/s", "<a href=\"$1\">$2</a>", $string);


 
et ce qui n'allait pas dans celle d'avant ce qu'il cherchait une balise de fin type [\URL] au lieu de [/URL ]


Message édité par anapajari le 07-07-2003 à 17:22:45
Reply

Marsh Posté le 07-07-2003 à 17:24:18    

tiens un truc un peu plus complet :
 

Code :
  1. $texte = preg_replace("/\[url\]((http|https|ftp|mailto):\/\/[a-z0-9;\/\?:@=\&\$\-_\.\+!*'\(\),]+?)\[\/url\]/i", "<a href=\"\\1\">\\1</a>", $texte);

 
et
 

Code :
  1. $texte = preg_replace("/\[url=((http|https|ftp|mailto):\/\/[a-z0-9;\/\?:@=\&\$\-_\.\+!*'\(\),]+?)\](.+?)\[\/url\]/i", "<a href=\"\\1\">\\3</a>", $texte);

Reply

Marsh Posté le 07-07-2003 à 17:24:22    

ok ou bien pour faire comme le précédent :
$tonTexte=preg_replace("/\[URL\](.*?)\[\/URL\]/s", "<a href=\"$1\">$1</a>", $tonTexte);


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 07-07-2003 à 17:30:15    

désolé grohark ton truc marche pas si j'ecrit: [URL ]www.google.com[/URL ] ce qui est un peu dommage non?
 
En plus quand c'est des balises utilisées pour son propre systeme de balisages on peut supposer que il va pas ecrire n'importe quoi ???

Reply

Marsh Posté le 07-07-2003 à 17:38:16    

oui t'es forcé de mettre de mettre http://   c'est pas la mort quand même !

Reply

Marsh Posté le 08-07-2003 à 15:15:27    

Pour faire exactement l'inverse !
 
c'est-à-dire pour passer de :
<a href="www.google.com" target=new>www.google.com</a>
à :
www.google.com
 
comment peut-on faire le regex ?
 
j'ai essayé ça mais ça fait des erreurs :

Code :
  1. $monTexte=preg_replace("/\<a\ href=\"(.*?)\"\ target=new\>(.*?)</a>/s", "\[url\]$1\[\/url\]", $monTexte);


Message édité par sire de Botcor le 08-07-2003 à 15:17:06

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 08-07-2003 à 15:15:27   

Reply

Marsh Posté le 08-07-2003 à 15:23:59    

Code :
  1. $monTexte=preg_replace("/<a href=\"(.*?)\" target=new>(.*?)</a>/s", "$1", $monTexte);


 
ça doit marcher mais exactement avec le motif que tu as donné car si par exemple  tu as un class qui se balade au milieu de ta balise a ça ne marchera pas. Attention aussi au nombre d'espace séparant chaque "mot".

Reply

Marsh Posté le 08-07-2003 à 15:27:36    

il me met
"Warning: Unknown modifier 'a' in nom_du_fichier.php on line 465"


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 08-07-2003 à 15:31:46    

avec ça, ça marche :

Code :
  1. $monTexte=preg_replace("/<a href=\"(.*?)\"(.*?)a>/s", "$1", $monTexte);


 
mais c du bidouillage...


Message édité par sire de Botcor le 08-07-2003 à 15:32:04

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 08-07-2003 à 15:36:48    

arf c'est moi qu'est quichonné désolé, j'ai oublié de mettre un \ devant le / de fermeture de la balise a...
Et en plus j'ai oublié de te mettre les tags URL.
 

Code :
  1. $monTexte=preg_replace("/<a href=\"(.*?)\" target=new>(.*?)<\/a>/s", "$1", $monTexte);

Reply

Marsh Posté le 08-07-2003 à 15:52:35    

ah, tiens, oui ! ça marche aussi !
et c'est plus propre : je prends !
 [:spikler]


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Sujets relatifs:

Leave a Replay

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