Remplacement de caractères, sans succès

Petit nouveau ! | 2 Messages

09 juin 2008, 10:00

Bonjour à tous !

Je viens de passer une bonne partie de ma soirée à essayer de résoudre un problème, aussi viens-je vers vous pour solliciter de l'aide. Je suis très novice en php, mais j'apprends relativement vite.

Voici ce que j'essaye de faire : j'ai une base de donnée SQL dans laquelle sont rangées des informations sur des cartes à collectionner. L'un des chant précise le type de carte (créature, enchantement, terrain...). Je voudrais donc programmer quelque chose qui puisse vérifier si la carte sélectionnée est de type "Créature" ou non. Deux problèmes à cela :
- le risque que "Créature" soit entré dans la base de donnée sans majuscule, et sans accent
- le fait que le type de la carte ne sera jamais "Créature" seul, mais plutot "Créature : gobelin", ou "Créature-artefact"...

Voici donc ce que j'ai fait :
$type = $donnees['crt_type']; // 1. on récupère le type dans la bdd
$type = strtolower($type); // 2. on met tout en minuscule
$type = str_replace("é", "e", $type); // 3. on remplace les 'é' par des 'e'
if(ereg('creature', $type)) { // 4. on vérifie si $type contient 'creature'
...
}
Les 1 et 2 fonctionnent bien. Mais le 3 ne fonctionne pas : le 'é' reste 'é'. J'ai tout essayé, mais sans succès. Aprés avoir parcouru de nombreux forums, il semble que ça vienne d'un problème d'encodage, mais là, j'avoue que je ne comprend pas du tout !

Nota :
$type = str_replace("é", "e", "créature");
Ca, ça fonctionne.

Merci d'avance de votre aide...

EDIT : je suis désolé, je n'ai pas du tout posté dans la bonne catégorie. Si un modo pourvait déplacer mon sujet... :-S

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 juin 2008, 10:02

EDIT : je suis désolé, je n'ai pas du tout posté dans la bonne catégorie. Si un modo pourvait déplacer mon sujet... :-S
C'est fait ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 74 Messages

09 juin 2008, 10:50

Bonjour à tous !
$type = str_replace("é", "e", "créature");
Ca, ça fonctionne.

Merci d'avance de votre aide...
Si ca, ca fonctionne il est probable que $type != @ "créature"

Affiche un echo ou un vardump sur $donnees['crt_type'] pour voir ce que ça retourne. ou bien vérifie dans ta base de données que c'est bien écrit créature et pas quelque chose du genre 'crÉture' ou je ne sais quoi encore en fonction du type de ta base de données.

Petit nouveau ! | 2 Messages

09 juin 2008, 11:09

C'est à n'y rien comprendre...

Je viens de réessayer le code que je vous ai mis ci-dessus. Et ça fonctionne... Alors que ça n'a pas fonctionné de toute la soirée ! Je ne comprend pas.

Sachant que j'étais sur Linux hier soir, et que je suis sous Windows ce matin, est-ce que ça peut avoir une influence (en particulier au niveau de l'éditeur de texte) ?! Mais j'en doute.[/php]