Salut,
Je n'ai pas trouvé de sujet similaire, j'éspère que mon post ne fait pas doublon.
Je rencontre un petit probleme : J'ai un fichier type texte, avec des mots dedans. En fait c'est l'utilisateur de mon site qui l'envoit, donc je veux faire une vérification de sécurité : enlever tout ce qui n'est pas des lettres pour éviter un eventuel code malicieux.
J'ai donc mon code :
$handle=fopen($mon_fichier,"r+" );
while (!feof($handle)) {
$data_fichier=fgets($handle,1024);
$search="#[^\-'a-zæÆàÀâÂäÄåÅçÇðÐéÉèÈêÊëËîÎïÏôÔöÖùÙûÛüÜÿÁáÍíÓóÚúÝýÑñßÞþØø ]#si";
$data_checked = preg_replace($search,"",$data_fichier);
fwrite($handle, $data_checked);
}
fclose($handle); |
Donc voila le principe : on parcours les lignes du fichier, si on trouve un caractère qui n'est pas répértorié par le masque $search, alors on le supprime, puis on recopie dans le fichier.
Mais dans la pratique, ca fonctionne pas très bien... Par exemple pour un fichier texte comme suit :
Toto
Tata
Titi-hihi
Jojo le rigolo
Tutu
L'analphabète |
Je me retrouve après execution de ma fonction avec le fichier suivant :
Toto
Toto
Titi-hihi
Titi-hihiigolo
igolo
L'analphabèteL'analphabète |
Ce qui est bien mais pas top... Où ais-je fais une erreur ? Ca ne vient meme pas encore de preg_replace puisque le texte passe mal dès récupération (j'ai fait un test en mettant un echo $data_fichier; ca plante déjà à ce moment.
Merci d'avance pour votre aide !