Rempalcer des caracteres par des images...

Le
Epicurien
Bonjour à tous,

Je cherche la solution la plus simple pour remplacer des caractères dans une
chaine, par leur équivalents en image
ainsi la chaine "rrw" contenue dans la variable $chaine doit être convertie
en "r.gif r.gif w.gif"

Comment dois-je m'y prendre ?

Merci d'avance pour votre aide
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #20389611
Bonjour,

Le 20/10/2009 22:39, Epicurien a écrit :

Je cherche la solution la plus simple pour remplacer des caractères dans une
chaine, par leur équivalents en image...
ainsi la chaine "rrw" contenue dans la variable $chaine doit être convertie
en "r.gif r.gif w.gif"...

Comment dois-je m'y prendre ?



Par exemple :
$chaine = chunk_split($chaine, 1, '.gif ') . '.gif';

Ou bien :
$chaine = preg_replace('/./', '$0.gif ', $chaine);

Ou encore :
$chaine = implode('.gif ', str_split($chaine)) . '.gif';

Il y a sûrement plein d'autres façons de procéder.


P.-S. : str_replace('al', 'la', 'Rempalcer'); ;-)

--
Olivier Miakinen
Michael DENIS
Le #20391321
Epicurien a écrit :
Je cherche la solution la plus simple pour remplacer des caractères dans une
chaine, par leur équivalents en image...
ainsi la chaine "rrw" contenue dans la variable $chaine doit être convertie
en "r.gif r.gif w.gif"...



Si j'ai bien compris la question,

*********************************
$chaine = "rrw";

for ($i = 1; $i <= strlen($chaine); $i++) {
$image = substr($chaine, $i-1, 1) . ".gif";
echo "image : $image <br />";
}
*********************************

devrait y répondre.

--
Michaël DENIS
CrazyCat
Le #20391311
Epicurien wrote:
Je cherche la solution la plus simple pour remplacer des caractères dans une
chaine, par leur équivalents en image...
ainsi la chaine "rrw" contenue dans la variable $chaine doit être convertie
en "r.gif r.gif w.gif"...



Je suis un peu étonné par ton remplacement, j'aurais plutôt vu:

Et donc
$letters = str_split($chaine);
$imgs = array();
foreach($letters as $k => $v) {
if ($v=='') $v = 'blank';
$imgs[] = ' }
$chain = implode('', $imgs);

--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Olivier Masson
Le #20394161
Michael DENIS a écrit :
Epicurien a écrit :
Je cherche la solution la plus simple pour remplacer des caractères dans une
chaine, par leur équivalents en image...
ainsi la chaine "rrw" contenue dans la variable $chaine doit être convertie
en "r.gif r.gif w.gif"...



Si j'ai bien compris la question,

*********************************
$chaine = "rrw";

for ($i = 1; $i <= strlen($chaine); $i++) {
$image = substr($chaine, $i-1, 1) . ".gif";
echo "image : $image <br />";
}
*********************************

devrait y répondre.




Ça ne répond pas à la même question.

Je rappelle que $chaine[$i] renvoie le caractère en position i.
Michael DENIS
Le #20395761
Olivier Masson a écrit :
ainsi la chaine "rrw" contenue dans la variable $chaine doit être convertie
en "r.gif r.gif w.gif"...







Ça ne répond pas à la même question.



Si je ne me trompe pas dans l'analyse de la question, mon code y répond
bien. Epicurien pourra sans doute nous éclairer. Mais il est vrai qu'en
répondant un peu plus strictement et en utilisant votre remarque (je ne
me lasse pas d'apprendre :-)), on aurait plutôt :

*********************************
$chaine = 'rrw';
$image = '';

for ($i = 1; $i <= strlen($chaine); $i++) {
$image .= $chaine[$i-1] . '.gif ';
}

echo $image;
*********************************

Je pars bien d'une chaîne "rrw" pour obtenir une autre chaîne "r.gif
r.gif w.gif " (avec un espace en fin de chaîne qui ne serait pas très
compliqué à gérer :-)).

--
Michaël DENIS
Pierre Maurette
Le #20399811
Olivier Masson, le 21/10/2009 a écrit :

[...]

Ça ne répond pas à la même question.



C'est exact. Mais je ne suis pas sûr que la question soit très bien
posée. J'intuite que le but est d'afficher une chaîne à l'aide d'un
alphabet graphique (glyphes ?), alphabet normal, langage des pavillons,
que sais-je encore.

Je ne sais pas si on peut mettre les images à la suite, il me semble
préférable de prévoir une certaine souplesse pour affiner la mise en
page. A la base on pourrait avoir:

echo $prolog;
for ($i = 0; $i < $len; $i++) {
$car = $chaine {$i} == ' ' ? 'space' : $chaine {$i} ;
echo $before.' }
echo $epilog;

Ensuite on détermine si on utilise un tableau, des span, ou autre. Un
exemple fonctionnel, à partir d'un tableau:

$chaine = "Pierre Maurette";
$len = strlen($chaine);
/* Calculs*/
$w = '800';
$before = " <td>";
$after = "</td>n";
$prolog = '<table width="'.$w.'" border="0" cellspacing="0"
cellpadding="0">'."n".' <tr>'."n";
$epilog = '
echo $prolog;
for ($i = 0; $i < $len; $i++) {
$car = $chaine {$i} == ' ' ? 'space' : $chaine {$i} ;
echo $before.' }
echo $epilog;

C'est sans doute mauvais, je ne connais sans doute pas le quart de Php,
que pourtant j'utilise :-(
En plus je mets en page le code HTML, ce n'est peut-être pas une bonne
idée.
Il est relativement facile de dimensionner les images en fonction de
$len, voire de splitter en deux lignes.

--
Pierre Maurette
Epicurien
Le #20417711
Bon je me suis débrouillé pour éviter les usines à gaz...

Un simple FOR fonctionne très bien... Pas la peine de faire des
conplications... ;)

for ($i=0; $i<strlen($chaine); $i++)
{
echo " }
Pierre Maurette
Le #20418021
Epicurien, le 24/10/2009 a écrit :
Bon je me suis débrouillé pour éviter les usines à gaz...

Un simple FOR fonctionne très bien... Pas la peine de faire des
conplications... ;)

for ($i=0; $i<strlen($chaine); $i++)
{
echo " }



Et surtout ne dites pas /Merci/.

--
Pierre Maurette
Epicurien
Le #20422541
> Et surtout ne dites pas /Merci/.



Merci à qui .? Je me suis débrouillé SEUL !!!

Et je viens faire part de mon code c'est déjà gentil je trouve...
Alors ce genre de réflexion me semble fort déplacée...
Olivier Miakinen
Le #20422681
Le 25/10/2009 20:54, Epicurien répondait à Pierre Maurette :
Et surtout ne dites pas /Merci/.



Merci à qui .? Je me suis débrouillé SEUL !!!



Ah ? Parce que tu n'as pas vu que la proposition de Michael Denis était
quasiment identique à la tienne ? Et même si ça n'avait pas été le cas,
le fait que tu aies choisi une solution éventuellement différente de
toutes celles qui t'ont été proposées ne change rien au fait qu'on a
pris du temps gratuitement pour les écrire, ces propositions.

Et je viens faire part de mon code c'est déjà gentil je trouve...
Alors ce genre de réflexion me semble fort déplacée...



Pour ma part c'est ta réponse qui me semble déplacée, bien plus même que
le fait de ne pas avoir dit merci.

--
Olivier Miakinen
Publicité
Poster une réponse
Anonyme