Test caractere

Bonjour,

Je voudrais tester des caracteres dans une chaine. Par exemple savoir si c’est une lettre ou un chiffre.
Plus precisement, j’ai une chaine du genre “ABC1234” ou “AB123” . A la base je veux récupérer ABC.
Donc je voulais faire ca en testant chaque caractere. et si les 3 premiers sont des lettres alors je les
recupere.

Merci

Tu peux faire un script qui teste chaque caractère par rapport à son code ASCII.

Un truc du genre :


<?php
$chaine="ABC1234";
$chainekelettre="";
for($i=0;$i<=strlen($chaine)-1;$i++)
{
    if(ord($chaine{$i})>=65 AND ord($chaine{$i})<=122)
           {$chainekelettre.=$chaine{$i};}
}

echo $chainekelettre;
?>

Viens de tester ça marche :heink:

Qu’est ce qu’on dit ? :ane: :love:

:fou:
Edité le 23/06/2007 à 18:46

Que c’est inutile? :slight_smile:

www.php.net… (le fait tout seul, en plus fonctionnel)

Et si tu veux faire plus simple :

www.php.net…

if (preg_match('/[a-z]{3}[a-z0-9]*/i', $chaine)) {
  echo substr($chaine, 0, 3);
}

Sinon pour information :

  1. $chaine{$i} est déprécié voire abandonné en php6, utilise toujours $chaine[$i]
  2. ord($chaine[$i]) >= 65 AND … : utilise &&, le AND ne sert à rien ici.
  3. rien ne dit que ord($chaine[$i]) pour ‘a’ ait toujours la valeur 65. (à priori : ord(‘a’) est mieux). En fait ça dépend de l’encoding, etc… donc à éviter :slight_smile:

Tu peux me ré-expliquer ce point stp :ane:

en encoding EBC DIC (une autre façon d’ordonner les caractères que l’ascii), ton test est foireux (regarde la table fourni sur Wikipedia).

D’où l’utilisateur des librairies ctype_* ou de preg_match qui fera ça correctement (bon ensuite, PHP est soit en iso 8859-1 soit en utf-8)

Merci :wink:

Merci pour toutes vos reponses ^^