[PHP] Supprimer le dernier caractère d'une chaine

Supprimer le dernier caractère d'une chaine [PHP] - PHP - Programmation

Marsh Posté le 27-10-2004 à 14:14:10    

Je voudrai supprimer le dernier caractère d'une chaine mais impossible de me souvenir de la fonction :(
 
Svp !


---------------
Comparez DVD Vierges, Graveurs de DVD et Boutiques en ligne
Reply

Marsh Posté le 27-10-2004 à 14:14:10   

Reply

Marsh Posté le 27-10-2004 à 14:20:47    

je connais pas de fonction toute faite, mais bon ça prend 2 lignes à faire:
- un strleng pour savoir la taille de tachaine ($nb)
- un substr pour prendre une sous-chaine de longueur "$nb-1" à partir du caractère "0"
 
Et encore qu'en une seule ligne avec un substr de longueur "strlen($ta_chaine)-1"...
 
moi c'est comme ça que je m'y prendrais :)


Message édité par Xav_ le 27-10-2004 à 14:21:07

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 27-10-2004 à 14:22:14    

compuman101 a écrit :

Je voudrai supprimer le dernier caractère d'une chaine mais impossible de me souvenir de la fonction :(


 
Vu que ça doit être pour effacer un espace ou un retour chariot, utilise la fonction rtrim() prévue pour :
http://fr2.php.net/manual/fr/function.rtrim.php

Reply

Marsh Posté le 27-10-2004 à 14:23:24    

Si tu connais le type de caractère à virer, rtrim fera l'affaire.

Reply

Marsh Posté le 27-10-2004 à 14:23:24    

Xav_ a écrit :


Et encore qu'en une seule ligne avec un substr de longueur "strlen($ta_chaine)-1"...
 
moi c'est comme ça que je m'y prendrais :)


et comme ça si la chaine est vide, ça fait un superbe plantage  :sarcastic:


Message édité par smaragdus le 27-10-2004 à 14:24:17
Reply

Marsh Posté le 27-10-2004 à 14:28:10    

C'est pour supprimer un Quote à la fin d'une ligne.


Message édité par compuman101 le 27-10-2004 à 14:29:07

---------------
Comparez DVD Vierges, Graveurs de DVD et Boutiques en ligne
Reply

Marsh Posté le 27-10-2004 à 14:33:49    

compuman101 a écrit :

C'est pour supprimer un Quote à la fin d'une ligne.


 
utilise donc rtrim avec l'option charlist.

Reply

Marsh Posté le 27-10-2004 à 14:43:46    

Désolé je me suis planté c'est une virgule


---------------
Comparez DVD Vierges, Graveurs de DVD et Boutiques en ligne
Reply

Marsh Posté le 27-10-2004 à 14:47:24    

Même réponse

Reply

Marsh Posté le 27-10-2004 à 14:48:46    

Oui je viens de m'en rendre compte avec la doc :)
Merci bcp


---------------
Comparez DVD Vierges, Graveurs de DVD et Boutiques en ligne
Reply

Marsh Posté le 27-10-2004 à 14:48:46   

Reply

Marsh Posté le 27-10-2004 à 14:51:23    

Smaragdus a écrit :

et comme ça si la chaine est vide, ça fait un superbe plantage  :sarcastic:


 
@

Reply

Marsh Posté le 27-10-2004 à 14:58:44    

l'option charlist ne répond pas à ce que je souhaite en fait puisqu'elle supprime tous les caractères de la chaine alors que je souhaite supprimer uniquement le dernier :(
 
Il me semblait avoir vu une fois une fonction ou l'on pouvait mettre en parametre -X et ca enlevait les derniers X caractères


---------------
Comparez DVD Vierges, Graveurs de DVD et Boutiques en ligne
Reply

Marsh Posté le 27-10-2004 à 15:02:00    

compuman101 a écrit :

l'option charlist ne répond pas à ce que je souhaite en fait puisqu'elle supprime tous les caractères de la chaine alors que je souhaite supprimer uniquement le dernier :(
 
Il me semblait avoir vu une fois une fonction ou l'on pouvait mettre en parametre -X et ca enlevait les derniers X caractères


 
Une solution t'a été donnée...  :o  

Reply

Marsh Posté le 27-10-2004 à 15:02:00    

c'est pas pour dire mais pour juste supprimer le dernier caractère d'une chaine il y a ca :

Code :
  1. substr($chaine,0,-1);


 
et meme avec une chaine vide ca passe :o (peut etre une notice)


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 27-10-2004 à 15:02:24    

KangOl a écrit :

c'est pas pour dire mais pour juste supprimer le dernier caractère d'une chaine il y a ca :

Code :
  1. substr($chaine,0,-1);


 
et meme avec une chaine vide ca passe :o (peut etre une notice)


 
clair... et encore une fois : @


Message édité par Hermes le Messager le 27-10-2004 à 15:02:42
Reply

Marsh Posté le 27-10-2004 à 15:09:23    

compuman101 a écrit :


Il me semblait avoir vu une fois une fonction ou l'on pouvait mettre en parametre -X et ca enlevait les derniers X caractères


 
En Perl, il y a la fonction chop(). Trouve l'équivalent en PHP.
 
Mais sinon, tu veux faire quoi à la base ? Exploser une chaine contenant des tokens ? Dans ce cas, utilise directement explode().
 
Quant à ceux qui conseillent le "@" : vive la "programmation propre" version PHP.

Reply

Marsh Posté le 27-10-2004 à 15:13:35    

Smaragdus a écrit :


 
Quant à ceux qui conseillent le "@" : vive la "programmation propre" version PHP.


 
Retourne jouer aux billes toi et ton <script langage="javascript'> ...
 
Le @ dans ce cas précis est pour éviter une NOTICE comme expliqué plus haut. Ce n'est pas une erreur... Et puis au pire, rien ne l'empêche de faire un if (strlen($truc) == 0)...

Reply

Marsh Posté le 27-10-2004 à 15:19:36    

Hermes le Messager a écrit :

Retourne jouer aux billes toi et ton <script langage="javascript'> ...


 
[:rofl] [:rofl] [:rofl] [:rofl]  
Le mec qui te ressort un truc d'un autre topic d'il y a 1 mois  :lol:  
Trop fort ce HLM...  :sarcastic:  
 
C'est pas d'un mec qui emploie des "@" à tout va qui a une chance de m'apprendre la programmation propre...

Reply

Marsh Posté le 27-10-2004 à 15:20:57    


 
Sors de là, vil trolleur :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 27-10-2004 à 15:22:27    

Smaragdus a écrit :


 
Quant à ceux qui conseillent le "@" : vive la "programmation propre" version PHP.

:heink:

Reply

Marsh Posté le 27-10-2004 à 15:26:40    

Smaragdus a écrit :

En Perl, il y a la fonction chop(). Trouve l'équivalent en PHP.


 
Attention, l'équivalent n'est pas la fonction chop() de php :)

Reply

Marsh Posté le 27-10-2004 à 15:35:18    

apres tests, substr ne revois pas de notice a ceci

Code :
  1. substr("",0,-1);


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 27-10-2004 à 15:55:07    

Hermes le Messager a écrit :

Tiens, ya l'aut connard qui veut nous apprendre le PHP après avoir essayé le JS , le C++ etc...


 
:sarcastic:

Reply

Marsh Posté le 27-10-2004 à 15:58:18    

Hermes le Messager a écrit :

Retourne jouer aux billes toi et ton <script langage="javascript'> ...
 
Le @ dans ce cas précis est pour éviter une NOTICE comme expliqué plus haut. Ce n'est pas une erreur... Et puis au pire, rien ne l'empêche de faire un if (strlen($truc) == 0)...


ben il a raison, ca fait pas trés jolie de mettre un @, ca fait un peu bricolage :/
Comme tu le dis, vaut mieux mettre un test.


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 27-10-2004 à 15:58:34    

bin je ne vois pas en quoi utiliser le @ c'est mal programmer [:spamafote]


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 27-10-2004 à 16:01:39    

KangOl a écrit :

bin je ne vois pas en quoi utiliser le @ c'est mal programmer [:spamafote]

ben ca cache TOUTES les erreurs, donc le jour ou t'aura une erreur importante, ben tu la verra pas.
et accesoirement, ca fait pas trés jolie de voir des @ un peu partout.
 


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 27-10-2004 à 16:01:41    

KangOl a écrit :

bin je ne vois pas en quoi utiliser le @ c'est mal programmer [:spamafote]


 
Ca dépend comment il est utilisé. Quand tu vois le nombre de script à avoir des trucs du genre

Code :
  1. @mysql_query(...);


 
Ouais, y a un problème :)

Reply

Marsh Posté le 27-10-2004 à 16:05:21    

le '@' sert juste a ce que la fonction dont il est préfixé n'affiche pas les erreurs qui peuvent survenir lors de son exécution.
après si tu testes pas la valeur retournée c'est un autre problème...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 27-10-2004 à 16:08:46    

KangOl a écrit :

le '@' sert juste a ce que la fonction dont il est préfixé n'affiche pas les erreurs qui peuvent survenir lors de son exécution.
après si tu testes pas la valeur retournée c'est un autre problème...


le probleme avec le @, c'est que dans des cas ca fait partir le message d'erreur mais ca corrige pas le probleme, comme parcourir des ligne d'un tableau qui n'existe pas.


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 27-10-2004 à 16:12:54    

Fabien a écrit :

le probleme avec le @, c'est que dans des cas ca fait partir le message d'erreur mais ca corrige pas le probleme, comme parcourir des ligne d'un tableau qui n'existe pas.


 
Oui d'autant plus que cette manie à mettre des '@' partout finit par cacher des effets sournois quand le script commence à être important. :jap:

Reply

Marsh Posté le 27-10-2004 à 16:13:07    

KangOl a écrit :

le '@' sert juste a ce que la fonction dont il est préfixé n'affiche pas les erreurs qui peuvent survenir lors de son exécution.
après si tu testes pas la valeur retournée c'est un autre problème...


 
C'est prendre le problème à l'envers ça, si tu traite l'erreur, php n'affiche rien non plus, mais ton erreur est gérée.
 
Le "@" pour la plupart, c'est ce que tu dis : on affiche pas, donc pas de problèmes, y a pas d'erreurs. Perso, je vois pas l'intérêt de masquer une erreur/notice en développement, et si ça arrive en prod, c'est que le problème est ailleurs :)

Reply

Marsh Posté le 27-10-2004 à 16:14:13    

Donc cache le message d'erreur c'est pas un code propre tout simplement :)

Reply

Marsh Posté le 27-10-2004 à 16:23:07    

Smaragdus a écrit :

et comme ça si la chaine est vide, ça fait un superbe plantage  :sarcastic:


 
ben oui mais si tu lis tout mon post j'ai conseillé de faire quand meme le strlen avant, donc s'il veut du propre, il test que la longueur est >=1 avant de la tronquer, mais quand il parle de supprimer le dernier caractère d'une chaine, ça suppose qu'elle en ai un de caractère, et ça il doit surement le cheker à la validation du formulaire ou autre phase de récupération de l'info (enfin j'espère).
 
Concernant la polémique du "@":
Le @ masque et ne corrige pas, ça c'est sur, mais par exemple un fopen qui trouve pas le fichier, ben tu fous un @ pour pas qu'il t'affiche l'erreur, par contre tu gère derriere que s'il trouve rien dans le fichier (vu qu'il y a pas de fichier) ben tu affiche que le fichier n'était pas présent, et pour moi c'est propre...
Evidemment, pour avoir le dernier mot, tu va me dire qu'il y a des is_file et autre file_exist, mais moi je parle d'un fopen d'un fichier distant, et j'ai rien trouvé de mieux que masquer les erreurs du fopen et fgets, et d'afficher que le fichier était absent si le fgets retourne un chaine nulle.


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 27-10-2004 à 17:44:24    

Effectivement, il ne faut pas abuser du @ mais parfois il est utile.
Dans tous les cas il faut vérifier le retour d'une fonction qui peut planter. Y'a un tas de "boulets" qui ne vérifient pas les retours de mysql_query par exemple  :sarcastic:  
 
 
Dans le cas présent, un test avec strlen() au préalable est AMHA le plus propre. cf le post de Xav_  

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed