Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1770 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Crée des liens à partir de mots dans un texte (expressions régulières)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Crée des liens à partir de mots dans un texte (expressions régulières)

n°241456
kalex
Posté le 07-11-2002 à 20:07:48  profilanswer
 

Voici le texte de départ :
Les cartes Nvidia gèrent l'openGL.
 
Le texte transformé :
Les cartes <a href='http://www.nvidia.com'>Nvidia</a> gèrent l'<a href='http://www.opengl.org'>openGL</a>.
 
Ça, pas de problème, je le fais avec :

Code :
  1. $text = ereg_replace('`(\b)(Nvidia)(\b)`i', "\\1<a href='http://www.nvidia.com'>\\2</a>\\3", $text);
  2. ...


Mais là où ça se gâte, c'est si je veux par exemple, faire un lien vers http. Mon code ne fait pas la différence entre le début de l'url est un http placé dans un texte.
 
Une aide serait la bien venue. :)
Merci.
 
Ps : Oui, j'ai déjà pausé la question il y a longtemps. ;)


Message édité par kalex le 07-11-2002 à 20:09:29
mood
Publicité
Posté le 07-11-2002 à 20:07:48  profilanswer
 

n°241634
Schtroumph​eur
bwwwwwaaaaarkkkkkkk!!!!!!
Posté le 08-11-2002 à 08:48:36  profilanswer
 

Comprends pas trop ton probleme, soit plus clair, donne un exemple de ce qui va pas.

n°241693
Mirgolth
Posté le 08-11-2002 à 11:39:31  profilanswer
 

Je n'ai pas réfléchit plus que ça a ton problème mais il me semble simple de faire la différence entre "http" et "href='http://"
 
Sinon tu peut exclure les http contenu dans des balise <a>.
 
Bref il y a pas mal de possibilités... pour les regexp par contre... un vendredi veille de long WE je peux pas t'aider.
 
Mirgolth


Message édité par Mirgolth le 08-11-2002 à 11:50:18

---------------
Livres dont vous êtes le héros
n°241720
beleg
黑社會
Posté le 08-11-2002 à 12:57:23  profilanswer
 

Kalex a écrit a écrit :

 
Mon code ne fait pas la différence entre le début de l'url et un http placé dans un texte.




 
début de l'url : précédé par " ou '
http placé dans un texte : précédé par un espace vide

n°241938
kalex
Posté le 08-11-2002 à 19:58:55  profilanswer
 

D'abord merci pour vos réponses. C'est vrai que j'aurais pu être plus clair.
 
Un autre exemple donc ; si mon texte de départ est :

Code :
  1. Allez voir <a href='http://monsite.com/nvidia.html'>ma page</a> sur Nvidia.


Ça me donnera :

Code :
  1. Allez voir <a href='http://monsite.com/<a href='http//www.nvidia.com'>nvidia</a>.html'>ma page</a> sur <a href='http//www.nvidia.com'>Nvidia</a>.


 
Mon texte de départ aurait aussi pu être :

Code :
  1. Allez voir <a href='http://monsite.com/page01.html'>ma page sur Nvidia</a>.


Avec comme résultat :

Code :
  1. Allez voir <a href='http://monsite.com/page01.html'>ma page sur <a href='http//www.nvidia.com'>Nvidia</a></a>.


 
D'ou le problème. :??:
 
J'ai essayé de rajouter des assertions négatives :

Code :
  1. "`(\b)(?<!<a href='.*'> )(Nvidia)(?<!</a> )(\b)`i"


Mais apparemment, le * n'y est pas permis.


Message édité par kalex le 08-11-2002 à 20:00:52
n°242726
kalex
Posté le 10-11-2002 à 18:04:58  profilanswer
 

Up

n°242865
beleg
黑社會
Posté le 11-11-2002 à 02:45:29  profilanswer
 


<?php
 
$text1 = "Les cartes Nvidia gèrent lopenGL.";
$text2 = "Les <a href=\"http://www.excellentes.com\">excellentes cartes Nvidia gèrent lopenGL</a>.";
$text3 = " is Nvidia is ";
 
$ret = " <a href=\"http://www.nvidia.com\">Nvidia</a> ";
$reg = " (Nvidia) ";
 
$reg2 = "(<a.*> ){1}(.*)(Nvidia)(.*)(</a> ){1}";
$ret2 = "\\1\\2</a> <a href=\"http://www.nvidia.com\">Nvidia</a> \\1\\4</a>";
 
$text = ereg_replace($reg2, $ret2, $text1);  
echo "\n<br><br>".$text."\n";
$text = ereg_replace($reg, $ret, $text);  
echo "\n<br><br>".$text."\n";
 
$text = ereg_replace($reg2, $ret2, $text2);  
echo "\n<br><br>".$text."\n";
$text = ereg_replace($reg, $ret, $text);  
echo "\n<br><br>".$text."\n";
 
$text = ereg_replace($reg2, $ret2, $text3);  
echo "\n<br><br>".$text."\n";
$text = ereg_replace($reg, $ret, $text);  
echo "\n<br><br>".$text."\n";
 
?>

n°242999
kalex
Posté le 11-11-2002 à 15:54:43  profilanswer
 

Un grand merci à toi beleg.
Je vais voir comment implanter/modifier ça pour l'intégré dans mon code. :)


Message édité par kalex le 11-11-2002 à 15:55:15

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Crée des liens à partir de mots dans un texte (expressions régulières)

 

Sujets relatifs
[ASP] Aide pour gestion de liens plizzzz[PHP/MySQL]Comment je fais pour récupérer la valeur que sum() créé ?
Insérer le contenu d'un fichier texte dans une feuille HTML[PHP]taille de texte
Expressions regulieres [je débarque][vb6]crée une lettre de CDrom virtuel
Mettre du texte à la ligne d'une photoLire une partie d'un fichier texte [résolu]
[PHP]Rechercher tout les liens dans une page! 
Plus de sujets relatifs à : Crée des liens à partir de mots dans un texte (expressions régulières)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR