Questions à propos de fonctions sur les chaînes de caractères

WRInaute passionné
Bonsoir,

Questions "nases" mais questions quand même ^^ :

1-Combien de fonctions peut on utiliser bout à bout sur une chaine ?
Ex :
Code:
$texte = stripcslashes(htmlspecialchars(trim(strip_tags($_POST["texte"]))));

2-Y a t'il un ordre à respecter ?

3-Quelle est la meilleurs façon de traiter un texte avant insertion en BD (Suppression des balises HTML, traitement des caractères spéciaux, etc...) ?

Merci
 
WRInaute impliqué
je sais pas si c'est plus efficace d'écrire le tout enchainer comme ça $texte = stripcslashes(htmlspecialchars(trim(strip_tags($_POST["texte"]))));

dans l'ordre il faut supprimer le html puis traiter le texte
 
WRInaute accro
Tu peux enchaîner autant de fonctions que tu veux, mais tout ne fait pas forcément beaucoup de sens.

Les fonctions à utiliser dépendent beaucoup de ce que tu as décidé de stocker dans ta base. Si tu as décidé de stocker du texte, alors htmlspecialchars n'est pas opportun, il faut le faire à l'affichage. Si tu as décidé de stocker du HTML pré-formaté (même limité à juste quelques entités et éventuellement quelques éléments genre <br>), alors il faut faire le htmlspecialchars et le nl2br. L'important, c'est de savoir ce que tu as décidé de stocker, et d'être cohérent au stockage et à l'affichage (par exemple ne pas refaire un htmlspecialchars sur du html). Les fonctions à utiliser dépendent aussi de ce que tu as en entrée (du texte, du html...).

Le stripcslashes, je ne sais pas très bien quel est l'intérêt ici.

Par contre, il est évidemment impératif d'utiliser mysql_real_escape_string ou équivalent (ou PDO) avant de passer tes données à une requête SQL.

Jacques.
 
WRInaute passionné
Je rejoins l'avis de Jacques.
Perso quand c'est des trucs "énormes" (plus de 3 fonctions) je segmente :
Code:
$a = strip_tags($var);
$b = trim($a);
$c = ...
Le tout avec quelques commentaires.
Sinon, depuis cette nuit je tente de :
Code:
$texte = stripcslashes(
    htmlspecialchars(
        trim(
             strip_tags(
                 $_POST["texte"]
             )
        )
    )
);
A la "array" like, je sais pas si je garderais ce truc,
 
Discussions similaires
Haut