Insérer un espace entre chaque caractère

VaN
Mammouth du PHP | 1107 Messages

10 juil. 2007, 15:51

Bonjour,

j'aimerai pouvoir insérer un espace entre chaque caractère de strings que je manipule, mais hélas, je ne suis pas très calé en regex, et il semble que le meilleure moyen de réaliser cela soit de passer par ces regex.

Existe t-il une autre solution ? Si non, existe t-il une regex simpliste qui permette de faire cela ?

Les caractères à séparer peuvent être n'importe quoi, une lettre, un digit, une apostrophe, etc.

merci d'avance.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 juil. 2007, 16:04

Avec preg_replace() tu dois pouvoir créer un pattern assez simple du style un caractère quelconque, présent une fois, que tu captures et remplace par ce même caractère et un espace :
preg_replace("/(.{1})/Ui", "$1 ", $str);
A tester, mais ça doit être quelque chose du genre... y même probablement pas besoin du {1} .. je te laisse essayer :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 259 Messages

10 juil. 2007, 16:33

hello,

sinon str_split() ne répondrait pas à ton problème ?

VaN
Mammouth du PHP | 1107 Messages

10 juil. 2007, 16:48

Merci à vous 2.

J'ai utilisé la réponse de Ryle, et après quelques retouches, ça fonctionne comme il faut :

Code : Tout sélectionner

<h1><?php echo preg_replace("/(.{1})/Ui", "$1&nbsp;", strtoupper($result['module_title'])); ?></h1>
(j'utilise &nbsp; pour également rajouter des espaces entre les espaces du mot source.)

ViPHP
ViPHP | 5924 Messages

10 juil. 2007, 17:25

Ou wordwrap en plus rapide :
<?php
echo wordwrap($str, 1, '&nbsp;', true);
?>

VaN
Mammouth du PHP | 1107 Messages

11 juil. 2007, 13:13

C'est effectivement ce genre de fonction que je cherchais, mais il semble qu'il y ait un problème :
elle n'intercalle par d'espace &nbsp; autour d'un espace HTML normal '(crée avec la barre d'espace).

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 juil. 2007, 13:41

Dans ce cas, tu peux peut être essayer la même chose avec chunk_split() voir si cela prend en compte les espaces également ou pas :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 5924 Messages

11 juil. 2007, 16:40

C'est effectivement ce genre de fonction que je cherchais, mais il semble qu'il y ait un problème :
elle n'intercalle par d'espace &nbsp; autour d'un espace HTML normal '(crée avec la barre d'espace).
Ouais, ca doit être parce qu'elle est destinée à l'origine pour traiter des mots.

VaN
Mammouth du PHP | 1107 Messages

12 juil. 2007, 14:38

chunk_split fonctionne bien il semblerait (même si ça n'a pas l'air d'être son utilisation première.) Merci.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

12 juil. 2007, 15:22

Bonjour,

Je ne sais pas ce à quoi tu veux arriver au final, mais si c'est uniquement pour de l'affichage, la propriété CSS letter-spacing est bien plus simple à mettre en place:
http://www.w3schools.com/css/pr_text_letter-spacing.asp
Quand tout le reste a échoué, lisez le mode d'emploi...