IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Scinder les mots trop longs d'une chaine


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Par défaut Scinder les mots trop longs d'une chaine
    Bonjour,

    Je suis à la recherche d'une fonction permettant de scinder les mots trop long d'une chaine.

    Par exemple :
    $text = 'ccccccccccccccccccccccccccccccccccccccccccccccccccccccc'; (etc...)

    Mise en situation :
    Si vous avez un tableau ou une div de 100px de largeur, ce texte va casser votre mise en page.

    Complexité :
    Il peut aussi y avoir des liens ou des images dans cette chaine qu'il ne faut pas scinder sinon ça ne fonctionne plus.

    Exemple de complexité :
    $text = 'cccccccccccccccccccccccccccccc<a href="http://www.monsite.com/news/12/c-mon-titre-de-news.html">news</a>';


    Pourriez-vous m'aider s'il vous plait ?

    Merci d'avance

  2. #2
    Membre confirmé Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Par défaut
    Bonjour,

    De tête vite fait comme ça :

    1. Faire un explode() sur les espaces " ".
    2. Faire un strip_tags() sur chaque chaine de ton explode.
    3. Calculer la longueur de ta chaine avec strlen().
    4. Couper ta chaine si nécessaire avec des substr().

    Voilà ce par quoi je commencerais à ta place.

    Bonne continuation sur les forums.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Par défaut
    Salut,

    Merci pour ta suggestion.

    Donc je suis d'accord sur ces points :
    1. explode()
    3. strlen()
    4. substr()

    Mais je ne comprends pas le "2." (strip_tags()). D'après le manuel php, cette fonction autorise des balises html dans une chaine, mais ça n'empêche pas le découpage (le passage aux étapes 3 et 4 pour cet array).

  4. #4
    Membre confirmé Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Par défaut
    Bonjour Angel31,

    Mais je ne comprends pas le "2." (strip_tags()). D'après le manuel php, cette fonction autorise des balises html dans une chaine, mais ça n'empêche pas le découpage (le passage aux étapes 3 et 4 pour cet array).
    Cette fonction supprime les tags html dans une chaine de caractères, hors, comme tu l'a expliqué :

    Il peut aussi y avoir des liens ou des images dans cette chaine qu'il ne faut pas scinder sinon ça ne fonctionne plus.
    Donc pour connaitre la longueur réelle de ta chaine (celle que tu vas afficher à l'écran), il te faut une chaine sans tags html, la fonction strip_tags() va te les supprimer ce qui te permettra de connaitre la longueur réelle de ta chaine en nombre de caractères.

    Ensuite par contre lorsque tu vas découper, bien entendu que tu vas devoir remettre tes tags. Donc après le point 4, tu recherches les endroits où tu dois remettre les tags que tu as enlevés, par exemple tu te sers de ta chaine originale pour retrouver et insérer parmis tes plus petites chaines les tags aux bons endroits.

    Donc soit tu remet tes tags soit sinon tu pourrais envisager d'utiliser des expressions régulières pour retrouver chaque point de découpage dans ta chaine d'origine et retourner un tableau contenant chaque sous-chaine, tags inclus.

    En tout cas bon courage car c'est une fonctionnalité qui ne me paraît pas si simple à implémenter.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Par défaut
    Merci pour tes explications.

    Je vais essayer de faire quelque chose et je te tiens au courant si j'ai d'autres questions.
    Si j'y arrive, je mettrais le code source à disposition car c'est une fonction très utile

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Par défaut
    Il y a un gros probleme avec l'explode de l'espace, les liens sont :
    <a href...>texte texte</a>

    Il y a un espace entre a et href ainsi que dans le texte

Discussions similaires

  1. Scinder un texte trop long d'une cellule en plusieurs cellules
    Par Jimmatdycol dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/02/2014, 10h33
  2. Comment couper les mots trop longs
    Par marcello2 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 09/06/2009, 08h00
  3. Modifier les mots "longs" d'une chaine de caractères
    Par Coussati dans le forum Débuter
    Réponses: 3
    Dernier message: 23/06/2008, 05h45
  4. Réponses: 3
    Dernier message: 27/04/2008, 19h10
  5. [RegEx] Trouver les mots en majuscule dans une chaine
    Par Boeing dans le forum Langage
    Réponses: 2
    Dernier message: 15/10/2007, 23h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo