CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Raccourcir une chaine PHP

Percubaba
Percubaba
Niveau 9
19 juillet 2008 à 19:01:49

Bonjour les amis,
je pose mon problème que voici

function raccourcir($chaine,$nblettres){
if(strlen($chaine)>$nblettres){
$chaine = substr($chaine,0,$nblettres).'...';
}
return $chaine;
}

C'est ma fonction pour raccourcir une chaine, elle marche cependant j'aimerais pas que les mots soient coupés en plein milieu.

En fait j'aimerais que la chaine stoppe à un espace, mais je ne trouve pas de fonction toute faite en PHP qui me permettrait de trouver la position d'un caractere à partir de x caractères. (je sais pas si je me fais bien comprendre)

La fonction que j'ai faite est d'autant plus pourrie qu'elle peut couper le codage en UTF-8 dans la BDD (un caractère spécial peut être écrit sur plusieurs caractéres) bref ca fout la merde!!

En tout cas si des gens peuvent m'éclairer la dessus ca serait méga classe!
Tchao

dnob700
dnob700
Niveau 10
19 juillet 2008 à 23:53:41

pour le problème de l'utf-8 tu peut regarder si le dernier caractère que tu laisse à son premier bit (celui de poid fort) à 1. Si oui, c'est un caractère multiple et donc tu l'enlève et tu vérifie de nouveau la même chose jusqu'à ce que le dernier caractère ai son premier bit à 0 (au pire, 3 caractères avant). Pour les espace, il doit certainement y avoir une fonction qui recherche un caractère à partir de la fin et non pas du début (une fois que tu as déjà tronqué ta chaine), mais je ne connais pas le php donc je ne peut pas t'aider (au pire, ça ne doit pas être très difficile de le réécrire).

deepblue
deepblue
Niveau 16
20 juillet 2008 à 02:34:50

function raccourcir($chaine,$nblettres){
if(strlen($chaine)>$nblettres){
$chaine = explode(' ', substr($chaine,0,$nblettres));
unset($chaine[ count($chaine)-1 ]);
$chaine = implode(' ', $chaine);
}
return $chaine;
}

A tester

Percubaba
Percubaba
Niveau 9
20 juillet 2008 à 22:56:19

Merci pour vos reponses qui m'ont donné quelques idées
la fonction était strrpos() pour trouver la position de la derniere occurence que l'on cherche. (c'est de la magie PHP^^)

Sinon j'aurai aussi pu faire en inversant la chaine, mais ca devient assez lourd, tout comme l'utilisation de tableaux.

function raccourcir($chaine,$nblettres){
if(strlen($chaine)>$nblettres){
$chaine = substr($chaine,0,$nblettres);
$position = strrpos($chaine,' ');
$chaine = substr($chaine,0,$position).'...';
}
return $chaine;
}

godrik
godrik
Niveau 30
21 juillet 2008 à 14:10:34

Tu veux dire que php n'a pas de gestion de l'utf8 ?

Sinon, l'autre solution c'est d'écrire l'algorithm toi meme, ce n'est pas tres dur.
tu pars du xieme caractere et tu parcours ta chaine vers la fin pour trouver la position du prochain espace (ou tout caractere ou tu autorises la césure)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment