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

  FORUM HardWare.fr
  Programmation
  PHP

  [ PHP ] str_replace avancé dans un $texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ PHP ] str_replace avancé dans un $texte

n°1723260
_Rit0n_
Posté le 24-04-2008 à 01:32:34  profilanswer
 

Bonsoir, j'ai un client, qui me demande de lui appliquer un filtre pour un champs de texte. ( variable $texte ).
dans cette variable est stocké le texte et les images en html, et le chargement ce fait depuis une bdd sql.
 
Par exemple a chaque fois que le mot poulet dans un article est affiché, que le mot soit remplacer par une url, et pour en gras.
C'est assez simple a faire, mais lorsque que j'utilise un :
 

Code :
  1. $texte = str_replace("poulet","<a href=\"http://www.poulet.com/fr/\" target=_blank><b>poulet</b></a>", $texte);


 
Le mot poulet est effectivement bien remplacer par le liens avec poulet en gras, mais il y a un bug :
 
Si dans l'article une image comporte le mot poulet, ou meme un lien, de ce fait le mot est aussi remplacer, et du coup l'image n'apparait plus, pareil pour le lien.
Il serait possible de detecter si le mot a remplacer n'est pas deja dans un lien ou une image, pour eviter le bug ?
 
Merci d'avance


Message édité par _Rit0n_ le 24-04-2008 à 01:33:04
mood
Publicité
Posté le 24-04-2008 à 01:32:34  profilanswer
 

n°1723288
sielfried
Posté le 24-04-2008 à 08:18:53  profilanswer
 

preg_replace('/\b(?<!=["\'])(?<!\/)poulet\b/', ...)
 
Avec ça il ne remplacera que les mots "poulet" (pas "poulets" ni "lebeaupoulet" ) qui ne sont pas précédés d'un slash (liens genre monbeausite.com/poulet.jpg), ou d'un =" ou =' (genre pour une image avec title ou autre). Après, on peut encore l'adapter au besoin...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1724112
_Rit0n_
Posté le 25-04-2008 à 05:34:16  profilanswer
 

donc cela nous donne un  
 

Code :
  1. preg_replace('/\b(?<!=["\'])(?<!\/)Trackmania\b/', "<a href=\"http://www.trackmania.com/fr/\" target=_blank><b>Trackmania</b></a>", $texte) ;


 
ca marche pas, je viens faire des test avec des preg replace, a mon avis ca doit etre une erreur de ' pour le remplaceur.
 
je vais continuer les test, merci  :hello:


---------------
Site web : http://nobock.fr
n°1724123
sielfried
Posté le 25-04-2008 à 08:08:38  profilanswer
 

Code :
  1. $texte = 'Trackmania blabla Trackmania blablaTrackmaniablabla Trackmania';
  2. echo preg_replace('/\b(?<!=["\'])(?<!\/)Trackmania\b/', "<a href=\"http://www.trackmania.com/fr/\" target=_blank><b>Trackmania</b></a>", $texte);


 
me renvoit

Code :
  1. <a href="http://www.trackmania.com/fr/" target=_blank><b>Trackmania</b></a> blabla <a href="http://www.trackmania.com/fr/" target=_blank>
  2. <b>Trackmania</b></a> blablaTrackmaniablabla <a href="http://www.trackmania.com/fr/" target=_blank><b>Trackmania</b></a>


 
Ça me paraît bon. Où est le problème ?


Message édité par sielfried le 25-04-2008 à 08:08:58

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1724136
_Rit0n_
Posté le 25-04-2008 à 08:47:55  profilanswer
 

Oui, il est vrai qu'avec l'heure avancer, j'avait oublier ca :
 

Code :
  1. $texte = preg_replace


 
Un grand merci !


---------------
Site web : http://nobock.fr

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

  [ PHP ] str_replace avancé dans un $texte

 

Sujets relatifs
Remplacer du texte dans un fichierAide sur fonction PHP
[PHP / BDD] Ma gallerie photoExtraction d'un fichier texte vers une liste (pascal)
[Résolu] Fonction count en PHP[PHP] Sqlite 3 et Blob
RESOLU PHP bbcode dans une shoutbox[PHP] Problème avec la un script tout simple
Où trouver des Developpeur PHP Programmation Orientée Objet ?script sur texte
Plus de sujets relatifs à : [ PHP ] str_replace avancé dans un $texte


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