remplacer un mot, sauf s'il est dans une uri - PHP - Programmation
Marsh Posté le 17-03-2006 à 16:47:16
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 :
|
Ensuite, il doit falloir adapter en fonction de la position du mot par rapport à la ponctuation
Pierre
Marsh Posté le 17-03-2006 à 17:09:14
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?
Marsh Posté le 17-03-2006 à 17:11:38
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 :
|
Marsh Posté le 20-03-2006 à 17:03:35
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?
Marsh Posté le 17-03-2006 à 16:37:53
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!