Supprimer le dernier caractère d'une chaine [PHP] - PHP - Programmation
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
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
Marsh Posté le 27-10-2004 à 14:23:24
Si tu connais le type de caractère à virer, rtrim fera l'affaire.
Marsh Posté le 27-10-2004 à 14:23:24
Xav_ a écrit : |
et comme ça si la chaine est vide, ça fait un superbe plantage
Marsh Posté le 27-10-2004 à 14:28:10
C'est pour supprimer un Quote à la fin d'une ligne.
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.
Marsh Posté le 27-10-2004 à 14:43:46
Désolé je me suis planté c'est une virgule
Marsh Posté le 27-10-2004 à 14:48:46
Oui je viens de m'en rendre compte avec la doc
Merci bcp
Marsh Posté le 27-10-2004 à 14:51:23
ReplyMarsh 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
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 |
Une solution t'a été donnée...
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 :
|
et meme avec une chaine vide ca passe (peut etre une notice)
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 :
|
clair... et encore une fois : @
Marsh Posté le 27-10-2004 à 15:09:23
compuman101 a écrit : |
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.
Marsh Posté le 27-10-2004 à 15:13:35
Smaragdus 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)...
Marsh Posté le 27-10-2004 à 15:19:36
Hermes le Messager a écrit : Retourne jouer aux billes toi et ton <script langage="javascript'> ... |
Le mec qui te ressort un truc d'un autre topic d'il y a 1 mois
Trop fort ce HLM...
C'est pas d'un mec qui emploie des "@" à tout va qui a une chance de m'apprendre la programmation propre...
Marsh Posté le 27-10-2004 à 15:20:57
Sors de là, vil trolleur
Marsh Posté le 27-10-2004 à 15:22:27
Smaragdus a écrit : |
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
Marsh Posté le 27-10-2004 à 15:35:18
apres tests, substr ne revois pas de notice a ceci
Code :
|
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... |
Marsh Posté le 27-10-2004 à 15:58:18
Hermes le Messager a écrit : Retourne jouer aux billes toi et ton <script langage="javascript'> ... |
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.
Marsh Posté le 27-10-2004 à 15:58:34
bin je ne vois pas en quoi utiliser le @ c'est mal programmer
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 |
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.
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 |
Ca dépend comment il est utilisé. Quand tu vois le nombre de script à avoir des trucs du genre
Code :
|
Ouais, y a un problème
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...
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. |
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.
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.
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. |
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
Marsh Posté le 27-10-2004 à 16:14:13
Donc cache le message d'erreur c'est pas un code propre tout simplement
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 |
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.
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
Dans le cas présent, un test avec strlen() au préalable est AMHA le plus propre. cf le post de Xav_
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