substr n’est en aucun cas une expression régulière, et le “-” ici présent est défini pour obtenir l’opposé du nombre donné. Tu confonds peut-être avec une quelconque utilisation ?
En fait, ici, le travail de substr est simple, il prend les caractères de TEXT depuis le caractère A jusqu’au caractère B, 0 étant la position AVANT LE PREMIER T de TEXT. En plaçant une valeur négative pour B, on part en arrière, et en supposant qu’il y a deux occurences de TEXT et que la position initiale pour B est entre les deux, on obtiendrait le curseur ici à la base:
TEXT|TEXT
Et avec B=-2:
TE|XTTEXT
Ce qui devient logique que A=0 et B=-2 donne TE, ou que A=1 et B=-1 donne EX.
Si tu as besoin de plus d’explications, demande ^^
EDIT PS: “je ne m’abuse” est mal employé ici :p, quand on dit “si je ne m’abuse”, on entend “si je ne me trompe pas”, si on se trompe, on dit “je me suis trompé”, de même on dira “je me suis abusé” 
Edité le 23/07/2007 à 19:38