PHP Envelopper d'une chaîne de caractères entre guillemets doubles
Je suis d'essayer d'enrouler un utilisateur saisi chaîne de caractères entre guillemets doubles pour la production, mais je veux m'assurer de ne pas finir avec double guillemets doubles de chaque côté de la chaîne. Par exemple, si un utilisateur publie
"Bonjour"
Je ne veux pas le transformer en
""Bonjour""
Je peux le faire assez facilement en utilisant le code ci-dessous, cependant, je suis préoccupé par le fait que cela peut devenir lent si je suis en parcourant beaucoup de chaînes.
$string = '"'.trim($string,'"').'"';
Si quelqu'un a une meilleure façon de faire cela, ce serait sympa. De même, si quelqu'un peut confirmer que ma façon est bien, je vais être heureux.
Grâce
- Où en êtes-vous à l'aide de cette chaîne? Est-il HTML, Javascript ou partie de la requête SQL?
- Assurez-vous juste qu'il n'y a pas de cas où l'utilisateur utilise des citations dans le texte qui sont alors également garnis mais peut-être ne devrait pas l'être.
- ET: c'est une citation:
'
- c'est une double citation"
- vous êtes à l'aide de ces termes un peu mal. - désolé tharkun - mauvaise terminologie de ma part. Je vais modifier
Vous devez vous connecter pour publier un commentaire.
C'est exactement comment je pourrais résoudre ce problème. C'est seulement la peine de s'inquiéter à propos du code de la lenteur si vous avez un problème avec l'application lente, et vous pouvez remonter jusqu'à la garniture consolidés.
Bien connu de programmation citation est "Prématuré D'Optimisation est la racine de tous les maux" - voir l'article de wikipédia liés pour en savoir plus sur cette.
Faire un examen attentif de ce qui arriverait dans tous les cas.
(à l'aide de [] comme les guillemets pour des raisons de lisibilité)
Vous avez dit ce que vous faites pour ["Bonjour"] mais tu fais quoi [j'ai dit "Bonjour", punk]? Avez-vous encore de bande de l'utilisateur-saisie de devis, ou voulez-vous supprimer? Ou peut-être aller plus loin et remplacer les guillemets simples pour les guillemets...mais vous auriez à prendre en considération les cas où l'entrée de l'utilisateur contient à la fois les guillemets simples et doubles! Que penser lorsque l'utilisateur met en "grammaticalement incorrect" texte ["Hello] (sans guillemet de fermeture!).
Meilleure façon de vous assurer de le faire est de faire un test pour chaque cas de bord que vous pouvez penser et assurez-vous que votre solution proposée ne fait ce qui est attendu.
Si la raison de cette exigence est [je prends l'entrée d'un utilisateur à un certain point, et puis de le ré-affichage à un autre point, et ne veulent pas les montrer stupide à la recherche de données comme [""data""]], vous aurez probablement juste envie de ne retirer les guillemets doubles à partir du début ou de la fin de la chaîne d'entrée, parce que les prive du moyen-vis destiné à l'utilisateur des données.
Si votre but est simplement de faire clairement la distinction entre leur entrée et le texte qu'ils n'ont pas d'entrée, pensez à utiliser d'autres moyens de mettre en évidence que, au lieu de guillemets. Ainsi, au lieu de [vous avez entré des données""], vous pouvez afficher [vous avez entré données] ou [que vous avez entré: données] qui permettent d'éviter ce problème.
Personnellement, je vous suggère de le dépouiller les citations sur entrée. Comme pour le rendre plus rapide, si vous laissez des guillemets pour être inscrit ou enregistré, vous êtes toujours coincé avec l'aide d'un
if
/else
avant de les afficher.Évidemment, vous auriez encore besoin d'effectuer un test de cohérence des données d'entrée quel que soit le système, vous vous retrouvez avec.
Il est de pratique courante d'utiliser les guillemets pour représenter une citation dans une citation, si vous voulez permettre à vos utilisateurs d'écrire:
et elle a dit "hey ho"
ce qui peut se transformer en:
Utilisateur: "et elle a dit "hey ho""
J'ai fait de cette façon: