Taille d'une chaine et retour-chariot

Eléphant du PHP | 66 Messages

13 sept. 2007, 16:08

Bonjour,

J'envoie par la méthode POST un formulaire contenant un textarea. Je veux limiter la taille à X caractères maximum. Pour ce faire, je contrôle côté serveur la chaine en utilisant la fonction strlen(). Or cette méthode compte pour 2 caractères les retour chariots entrés par l'utilisateur.

Par exemple la chaine:
123

67
me retournera 9 au lieu des 7 attendu.

Comment faire pour ne les compter qu'une seule fois?

Merci pour votre aide!

Flashball

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 sept. 2007, 16:13

Un retour charriot peut s'écrire de deux manières différentes selon que tu sois sur un système unix (\n) ou windows (\r\n). Le premier comptera pour un caractère, le second pour deux.

Tu peux donc essayer de remplacer dans ta chaine tous les '\r\n' par un '\n' avant d'utiliser strlen(), ou tu peux également compter le nombre d'occurence des retours charriot et les oter de la taille obtenue :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 66 Messages

13 sept. 2007, 16:20

J'ai effectué un str_replace() sur la chaine de '\r\n' par '\n' mais le compte est toujours le même.

Mes logs affichent un caractère bizarre à la place du retour charriot: un petit carré que je ne peux pas copier-coller sinon il se transforme en retour charriot justement! :roll:

d0m
Mammouth du PHP | 1141 Messages

13 sept. 2007, 16:32

Mes logs affichent un caractère bizarre à la place du retour charriot: un petit carré que je ne peux pas copier-coller sinon il se transforme en retour charriot justement! :roll:
tu as bien activé les retour à la lignes automatiques pour regarder les logs?

Eléphant du PHP | 66 Messages

13 sept. 2007, 16:41

Mea culpa j'ai fait la grossière erreur d'utiliser des simples cotes dans la fonction str_replace au lieu des doubles... :oops:

Merci pour le tuyau Windows/Unix en tout cas!