Insérer espaces sur n caractères dans une chaine - php

Bonjour,

Impossible de savoir comment on fait…
J’ai ma chaine qui fait 10 caractères par exemples, je voudrais la mettre sur 45 avec donc la chaine de 10 en la complétant jusqu’à 45 par des blancs.

Si qqn peut m’aider…substr_replace permet pas de préciser la longueur de l’argument qu’on insère je crois…

merci

$chaine = str_pad($chaine,45);

Et si tu veux completer avec autre chose que des espaces, par exemple des "a" :

$chaine = str_pad($chaine,45,"a");

la fonction qu’elle est cool :slight_smile:
merci sauf que…erf

si je mets des a comme tu me dis ça fonctionne…mais pas avec les blanc. :frowning:

j’ai essayé
$chaine = str_pad($chaine,45);
$chaine = str_pad($chaine,45, " ");
$chaine = str_pad($chaine,45, “ ”);

rien n’y fait :(:frowning:

En fait ça fonctionne bien, mais c’est le navigateur qui tronque les espaces en trop. Pour cela il faut utiliser des  , mais ça compte pour 6 caractères. Dans ce cas je te suggère d’utiliser str_repeat :

$chaine .= str_repeat(" ",45-strlen($chaine));

Ca marche nickel merci !

maintenant j’ai un autre pb…lol
Si ma variable $chaine se termine par un chiffre, je n’ai pas les 45 caractères… j’en ai moins :??: quoi que c’est aléatoire car des fois mm si elle se termine par des chiffres, j’ai bien mes 45 caractères, je pige pas du tout… :neutre: :neutre: :neutre:

ce qui permettra de mieux comprendre :

Pour ton problème, essaye avec les CSS :

.foo {white-space: pre}

pour avoir le même comportement que la balise <pre>.

ex: <span class="foo">aaa 1</span>

Pour ton second problème ??

merci. en fait il y avait des pb ds la bdd. c réglé. merci

Un autre pb…dong !
Dans ma liste déroulante, j’ai bcp, bcp de données par lignes, seulement pas il n’y a pas d’ascenseur horizontal qui permet de les voir…Est-ce que qqn aurait une solution pour ça ? J’avais pensé aux frame ou plutot aux iframes mais je sais pas si c bien judicieux…

Merci de vos soumissions d’idées.

Bon week-end :slight_smile:

Pour les liste trop longues tu n’as d’autres choix que d’agrandir leur taille via CSS (width: x%, etc). Enfin, remarques que sous IE c’est stupide comme tout : il est pas foutu d’agrandir la liste déroulante lorsque tu l’active (comme sous Fx).

Une autre solution (mais pas IE encore une fois) que tu peux tenter c’est de forcer le wrap sur l’option (en gros : que ça passe à la ligne, ça doit être white-space http://www.w3.org/TR/CSS21/text.html#propdef-white-space )

Ma boite est pro-IE…hélas… je suis bien d’accord avec toi utilisant moi-mm FF depuis longtemps) :frowning:

Dans ce cas, faut leur faire changer d’avis. on (solution caca) tu splitte chacune de tes options trop longues en plusieurs lignes :

<select ..>
  <option value="1">Trop long alors ...</option>
  <option value="1"> ... ça prend deux lignes...</option>
</select>

fous ta liste dans une div en overflow :slight_smile:


<div style="overflow:hidden;width:100px;height:30px;">
<select>
<option value="1">kjgflkdgjlfkdgjklfdjglfkdgjlfkdgjklfdjgklfdjgklerutioerjgnfkcln</option>
<option value="2">_ç'çé"_'çé"_'çà_"éàç'_é&à"ç'_"éàç_'ç"é_'çà"é_'çà_"éàç'</option>
</select>
</div>

Je doute que l’effet soit le bon (puisque c’est overflow sur la boite parente…) Il ne devrait pas avoir du tout la petite flèche pour activer la liste déroulante (et certains y sont habitués)

Ca ne fonctionne pas :frowning: