IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème avec strip_tags()


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut Problème avec strip_tags()
    Bonjour,

    j'utilise un editeur de texte dans mon site (FCKEditor) et aprés la validation du texte il stocke le contenu de l'editeur dans la variable $postedValue.

    je veux ensuite garder les toutes les balises mais eliminer juste la balise <font>. donc dans mon code j'ai fai comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php 
    	echo $postedValue;
    	echo '<br>';
    	$postedValue = strip_tags($postedValue,'<p><strong><div>');
    	echo $postedValue;
    ?>
    et le resultat affiché est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div align="center"><strong><u><font face="Tahoma" color="#ff0000" size="4">Test</font></u></strong></div>
    <div align="center"><strong><u><font face="Tahoma" color="#ff0000" size="4">Test</font></u></strong></div>
    même pour supprimer toutes les balises HTML j'ai tésté $postedValue = strip_tags($postedValue,); mais ca ne marche pas

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Utilises un preg_replace, c'est mieux qu'un strip_tags aux résultats plus qu'aléatoires.

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $postedValue = preg_replace('#</?font[^>]*>#Ui', '', $postedValue);

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strip_tags($postedValue,'<p><strong><div>');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('#</?font[^>]*>#Ui', '', $postedValue);
    marchent toutes les 2 mais seulement sur des chaines de caractéres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $text = '<div align="center"><strong><u><font face="Tahoma" color="#ff0000" size="4">Test</font></u></strong></div>';
    	 ?> <textarea name="text2" cols="88" rows="8"><?php
    	echo preg_replace('#</?font[^>]*>#Ui', '', $text);
    	echo strip_tags($text, '<p><strong><div>');
    	?>
    	  </textarea>
    <?php ?>
    alors que sur le resultat envoyé par FCKEditor ca marche pas et le contenu reste inchangé

    savedata.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    if ( isset( $_POST ) )
       $postArray = &$_POST ;			// 4.1.0 or later, use $_POST
    else
       $postArray = &$HTTP_POST_VARS ;	// prior to 4.1.0, use HTTP_POST_VARS
     
    foreach ( $postArray as $sForm => $value )
    {
    	if ( get_magic_quotes_gpc() )
    		$postedValue = htmlspecialchars( stripslashes( $value ) ) ;
    	else
    		$postedValue = htmlspecialchars( $value ) ;	
    }
     
    	echo strip_tags($postedValue);
    	echo '<br>';
    	$postedValue = preg_replace('#</?font[^>]*>#Ui', '', $postedValue);
    	echo $postedValue;
    ?>
    le résultat obtenu est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div align="center"><strong><u><font face="Tahoma" color="#ff0000" size="4">Test</font></u></strong></div>'
    <div align="center"><strong><u><font face="Tahoma" color="#ff0000" size="4">Test</font></u></strong></div>'

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Votre boucle est "étrange" par sa conception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach ( $postArray as $sForm => $value )
    {
    	if ( get_magic_quotes_gpc() )
    		$postedValue = htmlspecialchars( stripslashes( $value ) ) ;
    	else
    		$postedValue = htmlspecialchars( $value ) ;	
    }
    Elle ne sert à rien si ce n'est que $postedValue accueillera la valeur modifiée de la dernière variable de la méthode POST.

    De plus, du fait que vous appliquez la fonction htmlspecialchars les caractères tels que < et > sont remplacés par leurs entités (respectivement &lt; et &gt;) dans la variable $postedValue donc c'est pour cela que vos remplacements (strip_tags comme preg_replace) restent vains.

    PS : merci de ne pas multiposter

  5. #5
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Merci julp pour ton aide ca marche bien sans les htmlspecialchars
    et désolé pour le double poste

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec nl2br() et strip_tags()
    Par Mo_Poly dans le forum Langage
    Réponses: 6
    Dernier message: 08/09/2009, 20h05
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo