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

  FORUM HardWare.fr
  Programmation
  Perl

  Masque pattern/expression régulière exclusivement dans une balise HTML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Masque pattern/expression régulière exclusivement dans une balise HTML

n°261246
Deadog
Dain Bramaged
Posté le 04-12-2002 à 23:39:59  profilanswer
 

en php (je sais, c'est dans la sous-cat perl mais les expression régulière ayant pour origine le perl, et ke ici c'est pas trop un blem de php je met la ;) ) , je traite une variable (ki contient du texte avec du html) pour convertir tout les caractères spéciaux de l'html
 
le problème est ke ça convertit en même temps les balises html, donc les <, > et "
pour les < et > c'est réglé
mais pour les " je coince :/
 
voici ce ke j'utilise pour l'instant pour traiter les " :
 
$contenu=preg_replace('/<(.*?)&(quot|#34);(.*?)&(quot|#34);(.*?)>/si', '<\\1"\\3"\\5>', $contenu);
 
pour une valeur de contenu du genre $contenu="test test <a href="http://www.google.fr"> test test"
le resultat obtenu est "test test <a href="http://www.google.fr"> test test"
donc la ça marche :)
 
mais pour $contenu="test test <a href="http://www.google.fr" target="_blank"> test test"
ça me donne "test test <a href="http://www.google.fr" target="_blank"> test test"
donc la problème puisque les " du target ne sont pas traduit en " :/
 
j'ai essayé d'ajouter un multiplicateur au masque mais je me perd complétement dans la syntaxe des masques :(


Message édité par Deadog le 04-12-2002 à 23:42:30
mood
Publicité
Posté le 04-12-2002 à 23:39:59  profilanswer
 

n°261268
Toucouch
Posté le 05-12-2002 à 00:35:45  profilanswer
 

En gros, ton problème c'est que la recherche de motif n'est exécutée qu'une seule fois...
 
Je sais qu'en perl il existe l'option g pour ne pas limiter la recherche à la première occurence trouvée (ex: s/\s+/ /g), mais en php... :??:

n°261270
Toucouch
Posté le 05-12-2002 à 00:40:12  profilanswer
 

Solution temporaire de goret:
Tu fais une boucle sur ton replace jusqu'à ce que la sortie soit identique à l'entrée...


Message édité par Toucouch le 05-12-2002 à 00:40:31
n°261886
Deadog
Dain Bramaged
Posté le 05-12-2002 à 16:19:05  profilanswer
 

Toucouch a écrit a écrit :

Solution temporaire de goret:
Tu fais une boucle sur ton replace jusqu'à ce que la sortie soit identique à l'entrée...




 
 
la sortie je la connais pas ! les expl ct ce ke je voulais, étant donné ke c'est du texte pas fixe du tout (script de news) je ne peux connaitre la sortie k'après le traitement ;)
 
je vais essayer l'option g, dans le php ce sont des masques PCRE, pas très différent de ceux de perl :)

n°263679
Deadog
Dain Bramaged
Posté le 06-12-2002 à 19:27:16  profilanswer
 

l'option g marche po :(

n°263685
gizmo
Posté le 06-12-2002 à 19:35:32  profilanswer
 

houla! comment tu te compliques la vie!
 
Déjà, je ne comprend pas pourquoi tu limites ta recherche de guillemet uniquement entre balises, ensuite, pourquoi il faut que ton expression commence par une balise.
 
Donne un peu le context général, je suis sur qu'il y a moyen de faire qqch de bien plus efficace.

n°263691
Deadog
Dain Bramaged
Posté le 06-12-2002 à 19:48:15  profilanswer
 

je veux uniquement dans des balises html pke je veux ke les " du texte normal soit traduit en caractères html normaux ( " ) mais évidament, des " dans des balises ça marche pas :pfff:  
 
et mon expression commance par une balise pke c'est dans las balises ke je veux enlever les " :D
 
 
le contexte c'est ke c'est un système de news ke j'avais fait y'a qql temps mais j'avais pas penser aux caractères spéciaux au moment de la création
du cout j'ai une base de plus de 1000 news avec des caractères spéciaux dedans
j'ai 2 solutions :
-où c'est basta pour les anciennes news et je met mon changement de caract spéciaux au moment ou on post la news (pas d'html à ce moment la, c'est de l'ubb)
-où je prend en compte les anciennes news et met un filtre ki se charge de traduire les caract spéciaux au moment de l'affichage de la news
 
j'ai choisie la 2ème soluce, pour traduire les caract spéciaux j'utilise htmlentities($mavar, ENT_QUOTES); et après je cherche à retraduire les " dans les balises html
 
 
je sais ke invoquer htmlentites + une fonction de filtre à chaque affichage de news c'est pas génial génial, mais je veux ke les anciennes news de contienne pas de caract spéciaux non traduit
j'ai aussi une 3ème soluce, faire un script ki traduit toutes les anciennes news et mettre mon htmlentites au moment du postage de la news, mais on en reviens au même problèmes : il faut éviter les " dans les balises :D :gun:

n°263711
lorill
Posté le 06-12-2002 à 20:31:12  profilanswer
 


vive l'unicode \o/

n°264292
gizmo
Posté le 07-12-2002 à 11:49:08  profilanswer
 

OK. Ben, perso, j'aurais opté pour la 3ème solution. En effet, tu n'a pas tellement de balise qui contiennent des arguments, leur remplacement sera donc assez facile. A savoir:
 
1° une passe pour remplacer toutes les balises avec attribut en code BB
2° une transformation de tous les " restants en "
3° appliquer lors de l'affichage des news le même code BB que pour les nouvelles news.
 
Ca sera moins gourmand en ressource que l'autre. Parce que je vois bien comment retrouver toutes les occurences d'attribut dans une balise, mais pas comment les remplacer avec cette fonction.

n°264358
Deadog
Dain Bramaged
Posté le 07-12-2002 à 15:55:32  profilanswer
 

ok
 
sinon j'ai trouvé une 4ème solution
 
en faite si je voulais faire ça c pke sous certains navigateur avec certaines polices ça passé pas bien les caract spéciaux
mais en mettant
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
ça passe mieux :ange:  
 
je ferais la convertion des caract spéciaux dans la base lors du prochain gros changement du site, mettenant c'est plus trop urgent :p :)


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

  Masque pattern/expression régulière exclusivement dans une balise HTML

 

Sujets relatifs
J'arrive pas à retrouver le code html d'une couleur...le vieux vert!Html / dreamweaver
Comment chopper son IP et la coller dans une source HTML ???[HTML] - Image map popup - comment retourner à la ligne ?
[HTML] comment faire un refresh avec post automatique[Html] [URGENT] Mise en place d'un tab dans un tab
pas de html dans mes formulaires[HTML, JS] Protéger l'accès à une page avec un mot de passe
enchainer des mp3 en html[HTML/JS] Afficher au fur et à mesure le code HTML
Plus de sujets relatifs à : Masque pattern/expression régulière exclusivement dans une balise HTML


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