Suppression d'une seule citation d'une chaîne de caractères en php
J'ai un formulaire HTML que l'utilisateur peut saisir du texte dans un title
champ, j'ai ensuite php créer un fichier HTML nommé title.html
Mon problème est que les utilisateurs peuvent entrer des espaces et apostrophes dans le champ titre qui ne peuvent pas être utilisés dans le nom du fichier html. J'ai remplacé les espaces par des underscores:
$FileName = str_replace(" ", "_", $UserInput);
Cependant, je n'arrive pas à supprimer des simples guillemets? J'ai essayé d'utiliser:
$FileName = preg_replace("/'/", '', $UserInput);
mais cela a pris test's
et l'a transformé en test\s.html
.
Vous avez des magic quotes allumé. Cela provoque plus de problèmes qu'elle n'en résout, afin de les mettre hors tension.
OriginalL'auteur micahmills | 2010-10-11
Vous devez vous connecter pour publier un commentaire.
À l'aide de votre str_replace méthode:
S'il est difficile de le voir, le premier argument est une double citation suivie par une apostrophe suivie par un guillemet double. Le deuxième argument est deux guillemets doubles avec rien entre les deux.
Avec str_replace, vous pourriez même avoir un tableau de chaînes de caractères que vous souhaitez supprimer entièrement:
OriginalL'auteur
Vous pouvez remplacer en HTML entitiy:
OriginalL'auteur
Vous pouvez également être plus restrictif dans l'élimination des caractères non autorisés. La regex suivante serait de supprimer tous les caractères qui ne sont pas des lettres, des chiffres ou des caractères de soulignement:
Que vous pourriez vouloir faire cela pour assurer un maximum de compatibilité pour les noms de fichiers différents systèmes d'exploitation.
OriginalL'auteur
J'ai utilisé cette fonction htmlspecialchars pour les attributs alt dans les images
OriginalL'auteur
OriginalL'auteur
OriginalL'auteur
Essayer celui-ci. Vous pouvez enlever juste
'
et"
avec:OriginalL'auteur