Comparer deux chaines de caractères
Fermé
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
-
30 avril 2013 à 14:18
nonodu003 Messages postés 59 Date d'inscription jeudi 11 avril 2013 Statut Membre Dernière intervention 13 mai 2013 - 30 avril 2013 à 16:31
nonodu003 Messages postés 59 Date d'inscription jeudi 11 avril 2013 Statut Membre Dernière intervention 13 mai 2013 - 30 avril 2013 à 16:31
A voir également:
- Comparer deux chaines de caractères
- Caractères ascii - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères spéciaux clavier azerty - Guide
- Caractères spéciaux - Guide
- Deux ecran pc - Guide
4 réponses
Utilisateur anonyme
30 avril 2013 à 14:43
30 avril 2013 à 14:43
Salut salut,
Si ton code fonctionne normalement.. Enfin je pense! Tu as quelques exemples des noms de fichiers qu'il y a dans ton tableau?
Après il peut y avoir quelques petites choses à en dire, fais attention un fichier peut contenir plusieurs points dans son nom (ex : Personnage.class.php), Vu que tu sépares le nom de fichier par rapport aux points et que tu considères l'extension comme le 2e élément du tableau cela peut entrainer un comportement non voulu.
Tu peux faire $ext=count($extension)-1 pour être sûr d'avoir le dernier paramètre.
Tu peux aussi regarde du côté des expressions régulières pour ce que tu veux faire ;)
Si ton code fonctionne normalement.. Enfin je pense! Tu as quelques exemples des noms de fichiers qu'il y a dans ton tableau?
Après il peut y avoir quelques petites choses à en dire, fais attention un fichier peut contenir plusieurs points dans son nom (ex : Personnage.class.php), Vu que tu sépares le nom de fichier par rapport aux points et que tu considères l'extension comme le 2e élément du tableau cela peut entrainer un comportement non voulu.
Tu peux faire $ext=count($extension)-1 pour être sûr d'avoir le dernier paramètre.
Tu peux aussi regarde du côté des expressions régulières pour ce que tu veux faire ;)
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
Modifié par nonodu003 le 30/04/2013 à 15:58
Modifié par nonodu003 le 30/04/2013 à 15:58
ok merci. J'ai récupéré les extensions avec un substr du coup.
Et j'ai fini par trouver une fonction afin de comparer mes deux chaines ,qui est strcmp().
Mais j'ai un nouveau problème. Afin de voir si les fichiers sont valides selon leur extension j'ai fait ceci:
Mais voilà, je trouve pas les même valeurs avec les echo de $fichierTxt_valide ( de même pour dat) et les foreach lorsque je parcours mes nouveaux tableau.
Je sais pas si je suis compréhensible ?!
Par exemple, je teste 3 fichiers pour chaque extension
pour dat:
-avec echo on m'affiche: 1 2 1
-avec foreach: 1 1 1
pour txt:
-avec echo: 1 1 2
avec foreach: 2 2 2
Les echo sont juste par rapport à mon test. Du coup, je me doute que le problème vient de comment j'insère les valeurs à mes tableaux car on a l'impression que les foreach affiche la dernière valeur du fichier test (dans les deux cas).
Mais je ne vois pas d'ou peut provenir le problème... --"
Et j'ai fini par trouver une fonction afin de comparer mes deux chaines ,qui est strcmp().
Mais j'ai un nouveau problème. Afin de voir si les fichiers sont valides selon leur extension j'ai fait ceci:
for($nb = 0; $nb < $nbFileDat; $nb++) { //Vérification extension dat foreach($nomFichierDat as $value) { $chain = $value; $extension = substr($chain, -3); $compareDat = strcmp($extension,'dat'); if( $compareDat == 0) { echo "Extension dat OK ******* <br/>"; $fichierDat_valide[$nb] = 1; echo "$fichierDat_valide[$nb] <br/>"; } else { echo "Extension dat KO ++++++++ <br/>"; $fichierDat_valide[$nb] = 2; echo "$fichierDat_valide[$nb] <br/>"; } } //Vérification extension txt foreach($nomFichierTxt as $value) { $chain = $value; $extension = substr($chain, -3); $compareTxt = strcmp($extension,'txt'); if( $compareTxt == 0) { echo "Extension txt OK *********** <br/>"; $fichierTxt_valide[$nb] = 1; echo "$fichierTxt_valide[$nb] <br/>"; } else { echo "Extension txt KO ++++++++++ <br/>"; $fichierTxt_valide[$nb] = 2; echo "$fichierTxt_valide[$nb] <br/>"; } } } else { echo "<br/><p><strong>ERROR</strong> files<br/>"; } //Test de validation des fichiers foreach ($fichierDat_valide as $valueDat) { echo "Valide Dat: $valueDat <br/>"; if($value != 1) { $Dat_valide = 2; } } foreach ($fichierTxt_valide as $valueTxt) { echo "Valide Txt: $valueTxt <br/>"; if($value != 1) { $Txt_valide = 2; } }
Mais voilà, je trouve pas les même valeurs avec les echo de $fichierTxt_valide ( de même pour dat) et les foreach lorsque je parcours mes nouveaux tableau.
Je sais pas si je suis compréhensible ?!
Par exemple, je teste 3 fichiers pour chaque extension
pour dat:
-avec echo on m'affiche: 1 2 1
-avec foreach: 1 1 1
pour txt:
-avec echo: 1 1 2
avec foreach: 2 2 2
Les echo sont juste par rapport à mon test. Du coup, je me doute que le problème vient de comment j'insère les valeurs à mes tableaux car on a l'impression que les foreach affiche la dernière valeur du fichier test (dans les deux cas).
Mais je ne vois pas d'ou peut provenir le problème... --"
Utilisateur anonyme
Modifié par kyser soze le 30/04/2013 à 16:32
Modifié par kyser soze le 30/04/2013 à 16:32
Il doit y avoir un comportement qui bug, le code commence à avoir une certaine taille pour ce que ça fait.
Tu cherche à compter le nombre de fichier avec telle ou telle extension c'est bien ça? Les types d'extensions sont définis à l'avance ou tu les récupères selon le tableau de nom de fichier?
Tu peux procéder plus simplement, ça évite de se perdre dans le code :
Ici le code récupère l'extension vérifie si il l'a connait -> dans le cas où elle n'est pas présente dans le tableau il l'insère en instanciant un entier à 1 ; dans le cas où il l'a connait il incrémente simplement la variable contenu. Et tu as à la fin un tableau avec les noms d'extensions et le nombre de fois où elles ont été trouvées.
N'hésite pas si je ne suis pas claire.
Résolu? ===> [RESOLU]
Tu cherche à compter le nombre de fichier avec telle ou telle extension c'est bien ça? Les types d'extensions sont définis à l'avance ou tu les récupères selon le tableau de nom de fichier?
Tu peux procéder plus simplement, ça évite de se perdre dans le code :
$nomFichier=array("test.txt","test.dat","test.pdf","test.txt","test.dat","test.pdf","test.dat","test.pdf"); $tab_ext=array(); foreach($nomFichier as $value) { $extension = explode(".",$value); $extension=$extension[count($extension)-1]; if(!key_exists($extension,$tab_ext)){ $tab_ext[$extension]=1; }else{ $tab_ext[$extension]++; } }
Ici le code récupère l'extension vérifie si il l'a connait -> dans le cas où elle n'est pas présente dans le tableau il l'insère en instanciant un entier à 1 ; dans le cas où il l'a connait il incrémente simplement la variable contenu. Et tu as à la fin un tableau avec les noms d'extensions et le nombre de fois où elles ont été trouvées.
N'hésite pas si je ne suis pas claire.
Résolu? ===> [RESOLU]
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
30 avril 2013 à 16:31
30 avril 2013 à 16:31
Ok !!!!
Merci beaucoup pour aide ^^
Merci beaucoup pour aide ^^