Vérification d'un nom entré en paramètre ?
Posté : 16 mai 2006, 09:11
Bonjour !
je cherche à développer une classe "Personne" qui crée des personnes avec un nom et un prénom. Je voudrais effectuer des controles sur les chaines de caractères entrées par l'utilisateur.
Pour l'instant, j'ai le code suivant :
La vérification de la chaine se fait en 3 étapes :
- Commence par une majuscule
- Contient des caractères admis
- Valide la chaine si les deux étapes précedentes fonctionnent
Or, avec le code que j'ai écrit, il n'y a que la vérification de la majuscule qui fonctionne.
Quand je vérifie les caractères admis, j'ai "fauxfauxfaux..." comme réponse.
Pour tester la classe Personne, j'utilise ce code :
Quelqu'un voit où est le problème ?
Merci d'avance !
je cherche à développer une classe "Personne" qui crée des personnes avec un nom et un prénom. Je voudrais effectuer des controles sur les chaines de caractères entrées par l'utilisateur.
Pour l'instant, j'ai le code suivant :
Code : Tout sélectionner
<?php
class Personne {
private $nom;
private $prenom;
public function __construct($nom, $prenom) {
if ($this->verifieChaine($nom)) {
$this->nom = $nom;}
else{die('Le nom n est pas valide');}
if ($this->verifieChaine($prenom)) {
$this->prenom = $prenom;}
else{die('Le prenom n est pas valide');}
}
public function __tostring() {
return "Je suis $this->prenom $this->nom !";
}
public function afficheToi() {
print $this->__tostring();
}
public function getNom() {
return $this->nom;
}
public function getPrenom() {
return $this->prenom;
}
private function contientDesCaracteresAdmis($chaine) {
$ok = false;
$caracteresAdmis = 'aäàâbcdeëèéêfghiïîjklmnoöôpqrstuûùvwxyz';
for ($index = 1; $index <= strlen($chaine); $index++) {
if (strcspn ($caracteresAdmis, $chaine{$index}) == strlen($caracteresAdmis)) {
echo 'juste';
} else {
echo 'faux';
}
}
return $ok;
}
private function commenceParMajuscule($chaine) {
$ok = false;
if ($chaine != null && strlen($chaine)>=1) {
$ok = ($chaine{0} >= 'A' && $chaine{0} <= 'Z');
}
return $ok;
}
private function verifieChaine($chaine) {
$ok = false;
if ($chaine != null) {
$ok = $this->commenceParMajuscule($chaine);
if ($ok && strlen($chaine)>=2)
$ok = $this->contientDesCaracteresAdmis($chaine);
}
return $ok;
}
}
?>- Commence par une majuscule
- Contient des caractères admis
- Valide la chaine si les deux étapes précedentes fonctionnent
Or, avec le code que j'ai écrit, il n'y a que la vérification de la majuscule qui fonctionne.
Quand je vérifie les caractères admis, j'ai "fauxfauxfaux..." comme réponse.
Pour tester la classe Personne, j'utilise ce code :
Code : Tout sélectionner
<?php
require_once('classes.php');
$personne = new Personne(Stehlin, Alex);
$personne->afficheToi();
?>Merci d'avance !