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

  FORUM HardWare.fr
  Programmation
  PHP

  Problème de remplacement avec preg_replace() ( HEEEELP ! :-( )

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de remplacement avec preg_replace() ( HEEEELP ! :-( )

n°1686400
glc255
Posté le 14-02-2008 à 16:03:18  profilanswer
 

Bonjour,
 
J'ai le problème suivant :
 
Je publie des infos sur mon site, et je cherche à faire en sorte que chaque info soit visible sur le web avec les liens vers des sites externes que j'insère dans un champ de base de données. Exemple :
 

Mon texte ici <a href="http://www.xxx.com">avec un lien</a> et pourquoi pas <a href="http://www.yyy.com" class="toto">d'autres liens</a> et encore du texte...


 
Jusque là rien d'extraordinaire  :)  
 
Mais je veux que ce même texte puisse être affiché sur la version wap, en supprimant les liens vers les sites web externes (car ils ne s'afficheraient pas correctement sur un mobile, évidemment, puisque ce sont des liens vers des sites *WEB*).
 
Donc en gros je cherche une fonction PHP qui me supprime TOUS les <a ...> ...</a> avec des variantes éventuelles comme des espaces telles que < / a > pour que ça supprime même si on tape n espaces superflus dans les balises...
 
Bref une fonction qui me conserve tout le texte mais qui enlève tous les tags d'ouverture et fermeture de tous les liens.
 
Si je reprends mon exemple précédent, ça donnerait :
 

Mon texte ici avec un lien et pourquoi pas d'autres liens et encore du texte...


 
Mes recherches semblent m'indiquer que la fonction adéquate est preg_replace() mais j'ai fait plein de tests et je n'arrive pas à trouver le bon pattern. :cry:
 
Aaah les regexp patterns, toujours une galère  :(  Grmmmpf !... (je bougonne).
 
Quelqu'un aurait-il la solution siou plait ?  :jap:  
 
Un grand grand merci à qui saura m'aiguiller pour enlever cette épine du code  :hello:

mood
Publicité
Posté le 14-02-2008 à 16:03:18  profilanswer
 

n°1686404
glc255
Posté le 14-02-2008 à 16:09:13  profilanswer
 

Je précise que je ne peux pas utiliser la fonction strip_tags() de PHP, car j'ai besoin de supprimer juste les balises de liens en conservant les autres balises (car on peut afficher un texte en gras, par exemple, sur du wap) donc je veux pouvoir conserver des éléments en gras, italique, etc... en supprimant juste les liens

n°1686433
babasss
Posté le 14-02-2008 à 16:47:59  profilanswer
 

Citation :

string strip_tags  ( string $str  [, string $allowable_tags  ] )
Le paramètre optionnel allowable_tags permet d'indiquer les balises qui doivent être conservées.


Et avec ca, tu ne t'en sors pas ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1686435
glc255
Posté le 14-02-2008 à 16:49:01  profilanswer
 

Bon, alors je viens finalement de trouver la réponse, si ça peut aider quelqu'un dans les décenies ou siècles à venir (lol) :
 


$text='Je fais un essai < a href = "http://www.toto.com" >Mon texte ici</a> avec <a href="http://www.yoyo.com" class="">ca aussi< / a >';
 
 
$motif='`<[[:space:]]*a[^>]+?>(.*?)<[[:space:]]*/[[:space:]]*a[[:space:]]*>`';
$sortie='$1';
$texte=preg_replace($motif,$sortie,$text);
echo $texte;


 
Cette syntaxe fonctionne parfaitement, y compris si on tape des espaces supeflus dans les tags (comme <  a    href=""  >    <  /  a >   )
 
J'ai adapté le code trouvé au paragraphe 4 de ce cette page http://www.expreg.com/lire-URL-source  
d'un très bon site sur les regexp, en adaptant avec mes maigres connaissances de regexp (les [[:space:]] en l'occurence)
 
Elle permet donc de supprimer des liens dans un texte ou une chaîne en PHP  
(je mets ces mots-clés pour que quelqu'un puisse trouver cette solution un jour sans galérer comme moi  ;) )
 
Je n'ai pas tout compris, notamment la ligne :
 

$sortie='$1';


 
Pourquoi $1 ?
 
Je n'aime pas avoir une syntaxe qui marche sans savoir pourquoi elle marche  :sarcastic:  mais bon, le principal c'est qu'elle marche, je vais chercher pourquoi et comment dans un deuxième temps...  :lol:  
 
Au plaisir...

n°1686441
glc255
Posté le 14-02-2008 à 16:56:32  profilanswer
 

babasss a écrit :

Citation :

string strip_tags  ( string $str  [, string $allowable_tags  ] )
Le paramètre optionnel allowable_tags permet d'indiquer les balises qui doivent être conservées.


Et avec ca, tu ne t'en sors pas ?


 
Merci babass pour ta réponse, je ne savais pas qu'on pouvait spécifier des tags autorisés avec strip_tags, mais dans le principe ça ne me plaît pas trop, car plutôt que de dire quels tags HTML j'autorise (la liste serait longue et on risque d'en oublier), je préfère dire LE tag je veux supprimer, puisqu'il n'y a qu'un seul tag à supprimer (<a ...></a> ), c'est quand même plus simple  ;)  En tout cas merci pour ton aide.

n°1686447
babasss
Posté le 14-02-2008 à 17:01:35  profilanswer
 

glc255 a écrit :


Merci babass pour ta réponse, je ne savais pas qu'on pouvait spécifier des tags autorisés avec strip_tags, mais dans le principe ça ne me plaît pas trop, car plutôt que de dire quels tags HTML j'autorise (la liste serait longue et on risque d'en oublier), je préfère dire LE tag je veux supprimer, puisqu'il n'y a qu'un seul tag à supprimer (<a ...></a> ), c'est quand même plus simple  ;)  En tout cas merci pour ton aide.


Je m'en doutais un peu  :D


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1686451
anapajari
s/travail/glanding on hfr/gs;
Posté le 14-02-2008 à 17:02:56  profilanswer
 

glc255 a écrit :

Pourquoi $1 ?
Je n'aime pas avoir une syntaxe qui marche sans savoir pourquoi elle marche  :sarcastic:  mais bon, le principal c'est qu'elle marche, je vais chercher pourquoi et comment dans un deuxième temps...  :lol:  


Commence par le doc: http://fr.php.net/preg_replace ( paragraphe replacement)
 


---------------
Software and cathedrals are much the same - first we build them, then we pray.

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

  Problème de remplacement avec preg_replace() ( HEEEELP ! :-( )

 

Sujets relatifs
[Resolu ] Probleme CSS assez inexplicable : Espace blanc avec IE7[Oracle SQL] problème de script Settings
probléme timeout/cache Apache/php/mysql[SQL Serveur] probleme requete avec calcul (tout bete)
[SqlServer] Problème d'UPDATEProbleme lien hypertexte, en boucle
probleme d'iframe!!! [HTML] Probleme site web
scriptaculous: probleme avec Event.observeprobleme de requete pour recuperer un max
Plus de sujets relatifs à : Problème de remplacement avec preg_replace() ( HEEEELP ! :-( )


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