Bonjour à tous,

J'ai un petit soucis pour sanitize mes tableaux.
Pour sécuriser mes données sortant de ma base de donnée, j'utilise la fonctione Sanitize::clean($data, array('encode' => true));

Petit soucis c'est que les retour chariot se transforme en \n\n
J'utilise donc nl2br() pour convertir \n\n en <br /> mais rien n'y fait la sortie reste toujours \n\n un peu comme si:

$x = 'bonjour\n toi';
$y = "bonjour\n toi";
echo nl2br($x);
// Output: bonjour\n toi
echo nl2br($x);
// Output: bonjour<br /> toi

J'aimerai vraiment utiliser clean() car il est plus performant et plus simple d'utilisation.
Pour le moment j'utilise:
nl2br(Sanitize::html($data"content"]));
qui fonctinne bien mais html() ne prend pas de tableau en argument :s

Une idée?

6 réponses


tottosche
Auteur
Réponse acceptée

Merci pour ta réponse,
J'avais déjà essayé l'option 'cariage' => false mais ça me rajoutait juste un \r devant les \n
J'ai donc crée ma propre nl2br() mais je me demande toujours pourquoi le nl2br ne fonctione pas! :s

Est - ce que c'est suffisant?
Ne suis - je pas en train de louper une exception?

Voici mon code:

str_replace('\n', '<br />', $c'content'])

J'ai pas trop compris, les retours chariot sont supprimés ou ne sont pas correctement transformés par la methode clean ?

J'ai l'impression que clean() me retourne une chaine de caractère qui agis comme si elle etait placé dans des simple quotes

(ça a du sense ce que je dit la :p ?)

Franchement, moi je te conseil Sanitize::escape pour les inputs, Sanitize::html pour les outputs.
Je pense que tu as un problème avec Sanitize::clean parce que cette méthode supprime les retours chariot...

La doc le dit :

Double vérification des caractères spéciaux et suppression des retours chariot pour une sécurité SQL accrue.

Mais bon après les deux méthodes (escape et html) ne prennent pas les tableaux, uniquement les chaines de caractère, c'est moins pratique...

Edit : regarde peut-être au niveau des options de la méthode clean, tu peux désactiver les options que tu veux :

$this->data = Sanitize::clean($this->data, array('options' => false));

Bon après je sais pas quel option correspond à la suppression des retours chariot...

Voila tu fais ça et après tu appliques Sanitize::clean... mais bon il doit y avoir une autre méthode un peu plus "clean" :)

En faite j'ai appliquer clean et ensuite j'ai fait le string replace sinon ça m'aurait transformé les lt et gt and caractère HTML (nan?)

Je vais toujours faire comme ça puis je verrai pour la suite

Merki