Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/10/2011, 19h22   #1
Invité régulier
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 8
Points : 8
Par défaut Wordwrap sur du texte

Bonjour,

j'ai un petit problème pour gérer du texte dans cellule de table dont la longueur peut varier en fonction de la résolution.

J'affiche du texte contenant parfois 70-80 caractères qui se suivent et qui provoquent des débordement dans mon tableau.

J'ai vu que la fonction wordwrap permet de scinder une chaîne, étant donné que la longeur de ma cellule varie c'est un peu délicat de l'utiliser.

Je cherche une fonction qui me supprimerait ces mots ou qui les modifierait (avec un trait d'union) de tel sorte que mon code html ne soit plus confronter à ce problème.

Est-ce que quelqu'un aurait une idée ?

Merci d'avance,
flagodzki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 13h26   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 663
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 663
Points : 5 390
Points : 5 390
Si le problème n'est qu'au niveau de l'affichage, peut-être pourrais-tu utiliser la propriété CSS word-wrap (et non la fonction php du même nom)
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 10h14   #3
Invité régulier
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 8
Points : 8
j'y avais pensé, ca marche sur chrome avec la propriété max-width mais pas sous IE qui ne supporte pas cette propriété et qui conseille de fixer la largeur, mais ca ne m'intéresse pas.

c'est pour cette raison que je chercher une alternative au niveau du code...
flagodzki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 10h25   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 663
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 663
Points : 5 390
Points : 5 390
Hum... Alors il te faudrait une fonction qui isole les mots de plus de N caractères et qui les découpe en morceaux de L caractères, c'est ça ?
On doit pouvoir faire un mix entre str_word_count pour la récupération des mots et strtr pour le découpage de chaine. Ou alors passer par une regex.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 10h34   #5
Invité régulier
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 8
Points : 8
Salut,

Merci pour ta réponse.

Ce qui m'ennuie c'est que la fonction str_word_count ne renvoie pas tout, juste les mots, ca ne conviendra pas pour refaire mon champ texte...

merci quand même
flagodzki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 11h04   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 663
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 663
Points : 5 390
Points : 5 390
Ben dans ce cas, il faut que tu définisses ce qu'est un mot et que tu écrives ta propre fonction de découpage avec une regex par exemple...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 12h13   #7
Invité régulier
 
Inscription : septembre 2007
Messages : 30
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 30
Points : 8
Points : 8
Ouf je maitrise pas trop les regex. En faite il juste que je récupères les mots espacé d'un espace, une idée ?
flagodzki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 12h25   #8
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 663
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 663
Points : 5 390
Points : 5 390
si c'est juste séparés par un espace, explode devrait suffire.
Quelque chose de ce genre :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
/**
 * @param $texte : texte à découper
 * @param $longueurMax : longueur max d'un mot
 * @param $separateur : separateur pour decouper un mot
 */
function my_word_warp($texte, $longueurMax, $separateur = '-') {
    //on découpe sur l'espace
    $mots = explode(' ', $texte);
 
    // on découpe les mots de plus de n caractères
    $motsWrap = array();
    foreach ($mots as $mot) {
        $motWrap = $mot;
        if (strlen($mot) > $longueurMax) {
            $motParts = str_split($mot, $longueurMax);
            $motWrap = implode($separateur, $motsParts);
        }
        $motsWrap[] = $motWrap;
    }
    return implode(' ', $motsWrap);
}
Bon après, ya p'tet des pros de la regex qui peuvent faire ça en une ligne...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h42.


 
 
 
 
Partenaires

Hébergement Web