Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Rempalcer des caracteres par des images...

12 réponses
Avatar
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...

10 réponses

1 2
Avatar
Olivier Miakinen
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
Avatar
Michael DENIS
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
Avatar
CrazyCat
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:
<img src="r.gif" alt="r" />

Et donc
$letters = str_split($chaine);
$imgs = array();
foreach($letters as $k => $v) {
if ($v=='') $v = 'blank';
$imgs[] = '<img src="'.$v.'.gif" alt="'.$v.'" />';
}
$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
Avatar
Olivier Masson
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.
Avatar
Michael DENIS
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
Avatar
Pierre Maurette
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.'<img src="'.$car.'.gif" alt="'.$car.'" />'.$after;
}
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 = ' </tr>'."n".'</table>';

echo $prolog;
for ($i = 0; $i < $len; $i++) {
$car = $chaine {$i} == ' ' ? 'space' : $chaine {$i} ;
echo $before.'<img src="'.$car.'.gif" alt="'.$car.'" />'.$after;
}
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
Avatar
Epicurien
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 "<img src='".$chaine[$i].".gif' />";
}
Avatar
Pierre Maurette
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 "<img src='".$chaine[$i].".gif' />";
}



Et surtout ne dites pas /Merci/.

--
Pierre Maurette
Avatar
Epicurien
> 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...
Avatar
Olivier Miakinen
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
1 2