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 :

Insérer un espace insécable dans du texte


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Insérer un espace insécable dans du texte
    Bonjour,

    Je souhaite afficher une série de noms (genre "xxxx xxxxxxx xx xxxxxx" "yy yyyy yy" ...) dans une cellule d'un tableau, mais ne souhaite pas voir un nom "cassé" au milieu. Comment faire pour remplacer les espaces à l'intérieur d'un nom pour que le nom n'apparait plus sur deux lignes ?

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach (..) 
       $chaine = .....;
       echo ($chaine = str_replace(" ", "&nbsp", $chaine)); 

    mais ça ne marche pas, affichant "&nbsp" texto dans le nom.

    Toute aide appréciée.

    Merci
    David.

  2. #2
    Membre averti Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Points : 325
    Points
    325
    Par défaut
    Salut,

    Je ne suis pas sur de bien comprendre.

    Tu récupères un String avec des noms à l'intérieur du genre "paul dupont" que tu mets à la suite dans une cellule de tableau et tu voudrais que le prénom ne soit pas séparé du nom et que le passage à la ligne se fasse après l'entité prénom+nom, c'est bien ça?

  3. #3
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    pour empêcher le retour à la ligne, tu peux le faire avec du simple CSS :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div style="white-space : nowrap;">
    xxxx xxxxxxx xx xxxxxx cette phrase restera sur une ligne
    </div>

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par tibotibo69 Voir le message
    Salut,

    Je ne suis pas sur de bien comprendre.

    Tu récupères un String avec des noms à l'intérieur du genre "paul dupont" que tu mets à la suite dans une cellule de tableau et tu voudrais que le prénom ne soit pas séparé du nom et que le passage à la ligne se fasse après l'entité prénom+nom, c'est bien ça?
    Oui, c'est bien ça.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    pour empêcher le retour à la ligne, tu peux le faire avec du simple CSS :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div style="white-space : nowrap;">
    xxxx xxxxxxx xx xxxxxx cette phrase restera sur une ligne
    </div>
    Merci pour la réponse. Si j'ai bien compris, il faut que j'insère les balises html à l'intérieur du boucle "foreach" ?
    J'ai des centaines de noms, donc ça ne ferait pas trop lourd d'avoir autant de "div"s que de noms ? (Je ne me rend pas compte de l'iimplication de ça. Je vais essayer quand-même).

    J'ai oublié de préciser que les noms sont aussi des liens.

  6. #6
    Membre averti Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Points : 325
    Points
    325
    Par défaut
    Tu as essayé comme l'as indiqué nosferapti, ça te donne quoi ?

    Sinon tu peux forcer un passage à la ligne tous les x prénom+nom.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par tibotibo69 Voir le message
    Tu as essayé comme l'as indiqué nosferapti, ça te donne quoi ?

    Sinon tu peux forcer un passage à la ligne tous les x prénom+nom.
    J'ai fait ce qui a suggéré nosferapti, et effectivement les noms ne sont plus "cassés", mais il y a une retour à la ligne après nom, ce que j'aurais pu obtenir en ajoutant un "\n" après chaque nom, puisque aucun nom ne dépasse pas le largeur de la table. Le fait d'avoir un nom par ligne me gène parce que cela ferait une liste verticale très longue, et certains noms sont court, genre 4 ou 5 par ligne.

  8. #8
    Membre averti Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Points : 325
    Points
    325
    Par défaut
    et si tu remplaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div style="white-space : nowrap;">
    xxxx xxxxxxx xx xxxxxx cette phrase restera sur une ligne
    </div>
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <span style="white-space : nowrap;">
    xxxx xxxxxxx xx xxxxxx cette phrase restera sur une ligne
    </span>

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bon, ce n'est pas très élégante comme solution, mais j'ai trouvé un "workaround" qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           $chaine = str_replace(" ", "<font color = #ffffff>_</font color = #ffffff>", $chaine);
    Le seul hic est que cette solution dépend maintenant de la couleur du fond du template de mon site Internet. Tant que ça reste BLANC, ça ira.


    Je crois que la seule solution définitve sera d'implementer un compteur de caractères avec la fonction "strlen()" et d'insérer un "\n" lorsque on s'approche du bord droit.

    Merci encore pour les réponses.
    David.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par tibotibo69 Voir le message
    et si tu remplaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div style="white-space : nowrap;">
    xxxx xxxxxxx xx xxxxxx cette phrase restera sur une ligne
    </div>
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <span style="white-space : nowrap;">
    xxxx xxxxxxx xx xxxxxx cette phrase restera sur une ligne
    </span>
    Effectivement, les noms ne se cassent plus, mais la liste continue horizontalement en dehors de la cellule.

  11. #11
    Membre averti Avatar de tibotibo69
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 268
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par tibotibo69 Voir le message
    Sinon tu peux forcer un passage à la ligne tous les x prénom+nom.
    C'est ce que je te suggérai un peu plus haut.

  12. #12
    FoxLeRenard
    Invité(e)
    Par défaut
    Bonsoir,
    Je trouves ton idée de départ la meilleur, mais avec le ";" du symbole espace, qu'il faut donc "échapper"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach (..) 
       $chaine = .....;
       echo ($chaine = str_replace(" ", "&nbsp\;", $chaine));
    tout dans le \;

Discussions similaires

  1. Supprimer NBSP / espace insécable dans un menu dynamique ?
    Par anankee dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/09/2008, 14h30
  2. Insérer une fonction aujourdhui() dans du texte
    Par twistope dans le forum Excel
    Réponses: 5
    Dernier message: 17/07/2007, 09h15
  3. [Entities] Comment insérer un espace insécable
    Par <nbweb> dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 05/04/2007, 09h26
  4. Insérer des commandes Latex dans le texte
    Par Noodles dans le forum Mise en forme
    Réponses: 3
    Dernier message: 21/03/2007, 11h57
  5. Espace insécable dans une chaine de caractères
    Par Mors_Ubyte dans le forum Access
    Réponses: 1
    Dernier message: 11/02/2006, 21h43

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