[PHP]

Résolu/Fermé
moii - 31 janv. 2009 à 23:17
 moii - 1 févr. 2009 à 13:31
Bonjour,
Je suis embeté, je cherche a n'autoriser dans une chaine que une liste particuliere de caractere, et que des que la chaine comporte un caractere qui n'est pas dans la liste, que la fonction retourne 0.

Exemple :

$autoriser="ABC";
$test="ABCD";

if( tout les caracteres de $test sont dans $autoriser )
//tout va bien comme je veux
else
//là je sais qu'un caractere de test n'es pas dans autoriser, et c'est le cas que je cherche a eviter

Seulement, je ne sais pas c'est quoi la fonction qu'il faut utiliser pour mettre dans le if... j'ai essayer avec ereg et eregi mais ca ne marche pas :S

Merci de vos reponses
A voir également:

4 réponses

guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
1 févr. 2009 à 00:59
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);

// Notez notre utilisation de ===. == ne fonctionnerait pas comme attendu
// car la position de 'a' est la 0-ième (premier) caractère.
if ($pos === false) {
echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'";
} else {
echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring'";
echo " et débute à la position $pos";
}
?>

ou

<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);

// Notez notre utilisation de !==. != ne fonctionnerait pas comme attendu
// car la position de 'a' est la 0-ième (premier) caractère.
if ($pos !== false) {
echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring'";
echo " et débute à la position $pos";
} else {
echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'";
}
?>

a+
0
Merci de votre reponse, mais c'est le contraire de ce qu'il me faut !!
Dans votre exemple, la fonction rechercher un caractere souhaité dans une chaine.
Si un autre caratere s'y trouve (dans votre exemple b et c sont dans mystring) alors qu'il ne devrait pas dans le cas voulu.

Si un autre caractere que 'a' se trouve dans mystring alors je voudrait que la condition ne soit pas verifié.

J'ai eu une idee, avec preg_replace, je remplace toutes les lettres autoriser par, rien... et apres je regarde s'il reste des caracteres dans ma chaine, mais je ne sais pas ecrire la condition T_T
Est-ce if($string != "") ou ($string != NULL) ou ($string !== NULL) ou.... ????
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
1 févr. 2009 à 10:46
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
1 févr. 2009 à 10:48
et après tu inverse la réponse bien sur

par !
0
Je suis pas tres doué et je n'y arrive pas, -_-''

Je prefere donc faire au plus simple, donc je vais faire ma methode.

Mais si vous pouvez me dire ou et mon erreur :

<?php
$string = "fjfr-(_uàoçvr(-'èc";
$auto = "[^0-9][^A-Z][^a-z][^[&|é|\"|'|(|-|è|_|ç|à|)|=|^|$|*|¨|£|µ|ù|?|§|,|!|;|:|²|#|||@| ]]";
if (!preg_match($auto, $string)) {
echo "Il y a un caractere interdit";
}
?>

Il marque comme erreur :
Warning: preg_match() [function.preg-match]: Unknown modifier '[' in /mnt/167/sda/6/9/********/testtt.php on line 4

A noter que les caracteres qui sont dans auto sont les seuls que je veut retrouver dans string.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
1 févr. 2009 à 11:40
essayes cette autre methode:

<?php

$string = "fjfr-(_uàoçvr(-'èc";
$auto = "^[0-9][A-Z][a-z][&|é|\"|'|(|-|è|_|ç|à|)|=|^|$|*|¨|£|µ|ù|?|§|,|!|;|:|²|#|||@| ]{1,}$";
// caract acceptes   longueur minimum 1 carct tu peux changer entre les {mini,maxi}
// ^ $  en dehors des [] c'est pour tester la chaine du début à la fin
if (!ereg($auto, $string)) {
echo "Il y a un caractere interdit";
}
?> 
0
Désoler elle ne marche pas non plus, mais ce n'est pas grave, j'ai reussi a obtenir le resultat voulu, en faisant comme ca :
<?
$string = ""nfuezibt'raoébvpn'roaé"yhg";
$auto= array("/[0-Z]/", "/[a-ö]/", "/[!-,]/", "/Œ/", "/œ/", "/^/", "/_/", "/-/");
$test = preg_replace($auto, '', $string);
echo $test;
if($test != "")
echo "\n ya une merde, ta utiliser un caractere non autoriser";
0