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

  FORUM HardWare.fr
  Programmation
  PHP

  remplacer un mot, sauf s'il est dans une uri

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

remplacer un mot, sauf s'il est dans une uri

n°1327449
allergie
Posté le 17-03-2006 à 16:37:53  profilanswer
 

Bonjour,
 
je suis confronté à un problème que je n'arrive pas à résoudre.
 
je peux remplacer une occurence d'un mot par un lien avec str_replace() sans problème et mon objectif est de le remplacer par un lien vers sa définition si elle existe dans une base de donnée.
 
Par contre, le remplacement se fait quel que soit l'emplacement du mot et donc ça casse mes liens et email...
 
Connaitriez vous le moyen de :
 
1/filtrer le contenu $texte pour en sortir tous les liens en les mettant dans un tableau.
2/réintroduire le contenu de ce tableau dans le $texte à l'endroit où il était précédemment après que j'ai remplacé les occurences restantes du mot par mes liens.
 
Merci pour vos idées!

mood
Publicité
Posté le 17-03-2006 à 16:37:53  profilanswer
 

n°1327457
Lord II
PIB2000
Posté le 17-03-2006 à 16:47:16  profilanswer
 

Bonjour,
 
En toute logique, si c'est un mot que tu veux remplacer, alors il suffit de modifier la recherche du str_replace pour rechercher un mot avec un espace devant ou derrière
 
un truc dans ce genre :  

Code :
  1. $texte = str_replace(' mot ',' <a href="">mot</a>',$texte);


 
Ensuite, il doit falloir adapter en fonction de la position du mot par rapport à la ponctuation
 
Pierre

n°1327478
allergie
Posté le 17-03-2006 à 17:09:14  profilanswer
 

En fait, pas de problème : je sais remplacer un mot par une url hein :) (j'ai lu les faq des divers sites avant de demander quand même  ;) ...)
 
Ma question c'est comment ne pas remplacer le mot s'il est dans une url :
 
mon texte avec le mot et le <a href="blabl.html" class="mona">mot</a>
 
je veux remplacer le premier mot mais pas celui dans l'url sinon j'ai :
 
mon texte avec le <a href="mot">mot</a> et le <a href="blabl.html" class="mona"><a href="mot">mot</a></a>
 
ce qui casse tout évidemment  :(  
 
Suis je plus clair?

n°1327480
Lord II
PIB2000
Posté le 17-03-2006 à 17:11:38  profilanswer
 

oui tu as été assez clair, mais c'est pour ca que j'ai rajouté des espaces autour. ( c'est une solution très rapide )
 
Ensuite pour faire plus compliqué mais plus propre, il faut une fois le mot trouvé vérifier qu'il ne se trouve pas une balise </a> dans la suite du texte mais sans rencontrer un <a
 

Code :
  1. $index = strpos($texte,'mot')
  2. if ($îndex !== FALSE ) {
  3. //on cherche si on trouve </a> mais sans rencontrer <a
  4. //A mon avis avec une regex ca doit pouvoir se faire mais là j'ai pas le temps
  5. //Si c'est pas un lien alors on applique le remplacement
  6. }


Message édité par Lord II le 17-03-2006 à 17:28:36
n°1328920
allergie
Posté le 20-03-2006 à 17:03:35  profilanswer
 

Bon eh ben j'ai opté pour une regexp plutôt hein (oui je suis têtu):
 
$search= '@<a[^>]*?>.*?</a>@si';
/* je cree le motif que l'on va retirer : tout ce qui est entre <a...> et </a> */
 
$texte = preg_replace($search, $uris, $texte);
/* je sors les instances du motif et je les stocke dans $uris[] */
 
Mais probleme : j'ai l'impression que $uris ne s'incrémente pas au fur et à mesure...
 
je voulais stocker les chaines que je remplace dans un tableau pour les remettre au même endroit après traitement... :-\
 
une idée?


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

  remplacer un mot, sauf s'il est dans une uri

 

Sujets relatifs
remplacer fonctions chaine par un regex ?[Résolu] remplacer la valeur d'un attibut dans un doc
remplacer exitsub pour continuer la subGoogle Search : remplacer le bouton par un lien
[MySQL 4.1] remplacer en masse une valeurcomment remplacer \ dans une chaine ?
Modifier une ligne d'un fichier et la remplacer[actionscript]remplacer un clip par un autre
Faire une recherche/remplacer dans plusieurs fichiersUn wiki égoïste pour remplacer "Mes Documents" : quel wiki ?
Plus de sujets relatifs à : remplacer un mot, sauf s'il est dans une uri


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