A voir également:
- PHP - chaîne de caractère contien
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
1 réponse
[Dal]
Messages postés
6195
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
4 décembre 2024
1 092
Modifié par [Dal] le 3/11/2015 à 11:33
Modifié par [Dal] le 3/11/2015 à 11:33
Salut M_Tufux,
Si tu veux tester si une chaîne contient un nombre décimal, tu peux utiliser is_float.
strlen permet de déterminer la longueur d'une chaîne.
Personnellement, ne sais pas dire si un "caractère" est "négatif" (je sais dire si un "caractère" est un zéro). Si tu veux juste tester si une chaîne contient un nombre tu le vérifies avec is_numeric et tu peux vérifier si ce nombre est négatif ou nul avec
Dal
Si tu veux tester si une chaîne contient un nombre décimal, tu peux utiliser is_float.
strlen permet de déterminer la longueur d'une chaîne.
Personnellement, ne sais pas dire si un "caractère" est "négatif" (je sais dire si un "caractère" est un zéro). Si tu veux juste tester si une chaîne contient un nombre tu le vérifies avec is_numeric et tu peux vérifier si ce nombre est négatif ou nul avec
<= 0.
Dal
3 nov. 2015 à 11:42
Merci pour ta réponse.
Voici mes lignes pour savoir de quoi on parle:
Je précise que 5 chiffres sont entrés dans une balise input
Pour commencer, la condition qui ne devrait être vraie que si le 1er chiffre est positif. La chaîne contient 5 toujours chiffres fixes.
if(substr($_POST["id"],1) <= 0 && is_numeric($_POST["id"]))
Comme cette condition était toujours false, je l'ai mise en commentaire et je l'ai remplacée par
if(substr($_POST["id"],2) < 1)
En théorie ça ne devrait rien changer à part si le post id n'est pas numérique.
Pour la partie décimale
if(is_numeric($_POST["id"]) && is_float($_POST["id"]))
Ce test est toujours faux. J'ai donc essayé de mettre la partie is_numeric en commentaire. Le test est resté faux. J'ai encore fait un autre test en mettant is_float en commentaire et celui-ci est correct, MAIS: Si le nombre entré est décimal (on est d'accord qu'un nb décimal est 2.5, pas 2,5?), un petit texte en dessous de la balise doit s'afficher, OR (pas ou), j'avais laissé un mouchard alert en js et il s'est manifesté; par contre, le texte rouge en dessous de la balise ne s'affiche jamais, avec ou sans le mouchard js.
Ouais bref, j'espère que tu comprends plus ou moins ou je veux en venir. C'est un immense bordel tout ça.
Modifié par [Dal] le 3/11/2015 à 12:54
Pour is_float(), comme tu passes une chaîne, tu devrais faire ou une autre astuce suggérée dans les commentaires de la doc https://www.php.net/manual/fr/function.is-float.php pour évaluer le contenu de la chaîne numériquement avant de le passer à la fonction.
Sinon, je te confirme que l'on ne comprend rien à tes explications.
Pour t'expliquer, je te suggère de donner un exemple concis de données de départ et d'expliquer en français les cas que tu veux tester sur ces données et le but recherché.
Dal
3 nov. 2015 à 16:05
Merci pour ton aide et pour tes lignes de commandes. En fait je me suis complètement compliqué la tâche alors ce que n'était pas nécessaire. Pour résumer, je suis passé de 30 lignes dégueulasses à une dizaine de lignes.
Donc tout est fonctionnel