Puisque PHP est un langage dynamique, quelle est la meilleure façon de vérifier si un champ fourni est vide?
Je veux m'assurer que:
- null est considéré comme une chaîne vide
- une chaîne d'espace blanc uniquement est considérée comme vide
- que "0" n'est pas considéré comme vide
Voici ce que j'ai jusqu'à présent:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
Il doit y avoir un moyen plus simple de faire cela?
php
validation
Allain Lalonde
la source
la source
Réponses:
la source
Ancien message mais quelqu'un pourrait en avoir besoin comme moi;)
remplacez
$str
par votre variable.NULL
et les""
deux renvoient 0 lors de l'utilisationstrlen
.la source
if(strcmp('', $var) == 0)...
Utilisez la fonction empty () de PHP. Les éléments suivants sont considérés comme vides
Pour plus de détails, vérifiez la fonction vide
la source
J'accepterai humblement si je me trompe, mais j'ai testé de mon côté et j'ai trouvé que ce qui suit fonctionne pour tester à la fois les variables de valeur string (0) "" et NULL:
Ce qui pourrait également être inversé pour tester le succès en tant que tel:
la source
Méfiez-vous des faux négatifs de la
trim()
fonction - elle effectue un transtypage en chaîne avant le découpage, et retournera donc par exemple "Array" si vous lui passez un tableau vide. Cela peut ne pas être un problème, selon la façon dont vous traitez vos données, mais avec le code que vous fournissez, un champ nomméquestion[]
peut être fourni dans les données POST et apparaître comme une chaîne non vide. Au lieu de cela, je suggérerais:la source
Il n'y a pas de meilleur moyen, mais comme c'est une opération que vous faites généralement assez souvent, vous feriez mieux d'automatiser le processus.
La plupart des frameworks offrent un moyen de rendre l'analyse des arguments une tâche facile. Vous pouvez créer votre propre objet pour cela. Exemple rapide et sale:
Symfony utilise massivement ce type de sucre.
Mais vous parlez de plus que cela, avec votre "// Handle error here". Vous mélangez 2 jobs: récupérer les données et les traiter. Ce n'est pas du tout la même chose.
Il existe d'autres mécanismes que vous pouvez utiliser pour valider les données. Encore une fois, les frameworks peuvent vous montrer les meilleures pratiques.
Créez des objets qui représentent les données de votre formulaire, puis attachez des processus et revenez dessus. Cela semble beaucoup plus de travail que de pirater un script PHP rapide (et c'est la première fois), mais c'est réutilisable, flexible et beaucoup moins sujet aux erreurs puisque la validation de formulaire avec PHP habituel a tendance à devenir rapidement du code spaguetti.
la source
Celui-ci vérifie les tableaux et les chaînes:
la source
pour être plus robuste (tabulation, retour…), je définis:
sources:
la source
Lorsque vous souhaitez vérifier si une valeur est fournie pour un champ, ce champ peut être a
string
, anarray
ou non défini. Donc, ce qui suit suffitla source
empty () fonctionnait pour cela, mais le comportement de empty () a changé plusieurs fois. Comme toujours, les documents php sont toujours la meilleure source de comportement exact et les commentaires sur ces pages fournissent généralement un bon historique des changements au fil du temps. Si vous voulez vérifier l'absence de propriétés d'objet, une méthode très défensive pour le moment est:
la source