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 ^^