Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/04/2006, 12h53   #1
Membre émérite
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 922
Points : 922
Par défaut [SQL] Afficher du HTML extrait d'une BD

Bonjour,

Dans ma BD, j'ai un champ texte (de type longtext) qui me permet de stocker un bloc.
Ce bloc peut contenir du texte (avec mise en forme) ou bien des images, d'où la présence de balises HTML : img, p, ...
Lorsque je fais ma requete et que j'affiche ce bloc, pas de problème.
Mais ce que je voudrais c'est transformer les accents de mon bloc en appliquant la fonction htmlentities()
[ è -> è | é -> é ...]
Le hic, c'est que ça va également "transformer" mes balises <img ...> en &lt;img ... &gt;

Auriez-vous une solution ?
Je précise que je ne sais pas par avance le nombre de balises HTML du bloc.

Merci.
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 13h02   #2
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Essayer de faire joujou avec la fonction str_replace ?

ca va être long, puisqu'il va faloir le faire pour chaque caractère spécial, mais je vois que ca ...
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 13h03   #3
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Ben... c'est simple ;o)

tu commence par transformer tout les caracteres que tu ne veux pas transformer en une chaine spéciale (par exemple remplacer < par ¤¤lt¤¤ puis > par ¤¤gt¤¤) puis tu appelle htmlentities, puis a nouveau le remplacement contraire du 1er pour retrouver les balises.
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 13h07   #4
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Autre solution non testée :

Code :
1
2
3
4
5
6
<?php
$convertTable = get_html_translation_table(HTML_ENTITIES);
unset($convertTable['>']);
unset($convertTable['<']);
$texte = strtr($texte, $convertTable);
?>
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 13h21   #5
Membre émérite
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 922
Points : 922
J'ai bien pensé au str_replace() ou bien à inserer directement les codes &eacute, &agrave, directement dans le champ SQL.
Mais c'était lourd...

Merci Fladnag, ça à l'air de fonctionner ainsi.
Je vais faire d'autres tests encore.

Par contre je ne connaissais pas la fonction get_html_translation_table()
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2006, 19h51   #6
Membre émérite
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 922
Points : 922
Après divers tests, cela fonctionne parfaitement !

J'ai aussi supprimé le guillemet (pour les classes, id, ...).

Merci
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2006, 09h19   #7
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

N'est-ce pas précisément l'utilité de html_special_chars() ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2006, 09h43   #8
Membre éclairé
 
Avatar de XtofRoland
 
Inscription : août 2005
Messages : 361
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 361
Points : 340
Points : 340
bravo pour la solution de flanag

perso j'aurais fais une expression reguliere pour extraire les balise s du texte ensuite j'aurais boucler sur le retour de mon expression

pour chaque valeur qui ne commence pas par < j'applique html_entities
__________________
Le but de tout developpeur OO est de devenir une référence.
Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
Aider <> Faire a la place de!!!
XtofRoland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2006, 10h02   #9
Membre émérite
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 922
Points : 922
htmlspecialchars() fait la même que chose que htmlentities() non ?
__________________
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2006, 11h13   #10
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Citation:
Envoyé par Linaa
htmlspecialchars() fait la même que chose que htmlentities() non ?
htmlspecialchars est moins complet que htmlentities puisque qu'il ne remplace que &'"<> alors que htmlentities remplace aussi tout les autres caracteres qui ont des equivalents html (à en &agrave; par exemple)

La doc le dit tres bien :

http://fr.php.net/fr/htmlspecialchars
http://fr2.php.net/fr/htmlentities
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h41.


 
 
 
 
Partenaires

Hébergement Web