Page 1 sur 1
Insérer un espace entre chaque caractère
Posté : 10 juil. 2007, 15:51
par VaN
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.
Posté : 10 juil. 2007, 16:04
par Ryle
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

Posté : 10 juil. 2007, 16:33
par Jules Petibidon
hello,
sinon str_split() ne répondrait pas à ton problème ?
Posté : 10 juil. 2007, 16:48
par VaN
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 ", strtoupper($result['module_title'])); ?></h1>
(j'utilise pour également rajouter des espaces entre les espaces du mot source.)
Posté : 10 juil. 2007, 17:25
par Sékiltoyai
Ou wordwrap en plus rapide :
<?php
echo wordwrap($str, 1, ' ', true);
?>
Posté : 11 juil. 2007, 13:13
par VaN
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 autour d'un espace HTML normal '(crée avec la barre d'espace).
Posté : 11 juil. 2007, 13:41
par Ryle
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

Posté : 11 juil. 2007, 16:40
par Sékiltoyai
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 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.
Posté : 12 juil. 2007, 14:38
par VaN
chunk_split fonctionne bien il semblerait (même si ça n'a pas l'air d'être son utilisation première.) Merci.
Posté : 12 juil. 2007, 15:22
par @rthur
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