03-02-2009, 01:01 PM
(Modification du message : 03-02-2009, 02:26 PM par Sephi-Chan.)
Bonjour,
J'aimerais savoir comment faire pour remplacer plusieurs caractères d'une chaine par un équivalent. Ayant déjà été confronté à ce problème en php, j'ai adapté la fonction à javascript. Il se trouve qu'il est pas envie de bosser...
En php, qui fonctionne bien
Code Javascript, qui apparement n'aime pas les tableaux dans le replace()
Edit : Il y a de l'avancement, j'ai rajouté un for(var i=0; i<=search.length; i++) au dessus du chaine.replace, ça marche tant qu'il n'y à pas plus d'un seul caractère à modifier dans chaque cas.
exemple : si j'ai une chaine avec "é, ô, à, è, é, à", je me retrouve avec "'é, $ocirc;, à, è, é, à"...
Si vous avez une piste pour régler ce problème d'accents qui apprécient pas l'Ajax, je suis preneur. :bave:
Re-Edit : finalement je la joue bourrin, j'ai copier-coller la fonction php encodeUTF8 que j'ai renommé et j'ai remplacer les & par des | dans $replace, et sur l'évènement, j'appelle cette fonction. Et je retraduit après en php, avant le traitement Ajax.
J'aimerais savoir comment faire pour remplacer plusieurs caractères d'une chaine par un équivalent. Ayant déjà été confronté à ce problème en php, j'ai adapté la fonction à javascript. Il se trouve qu'il est pas envie de bosser...
En php, qui fonctionne bien
Code :
function encodeUTF8($tab)
{
$search = Array('|', 'é', 'è', 'ê', 'ë', 'à', 'ä', 'â', 'ù', 'û', 'ô', 'ö', 'ç', 'î', 'ï', 'œ', 'É', 'È', 'Ê', 'À', 'Ç', '"', '“', '”', '«', '»', "'", "'", "‘", "’", "'", "...", "…");
$replace = Array('&', 'é', 'è', 'ê', 'ë', 'à', 'ä', 'â', 'ù', 'û', 'ö', 'ö', 'ç', 'î', 'ï', 'œ', 'É', 'È', 'Ê', 'À', 'Ç', '"', '“', '”', '«', '»', ''', ''', '‘', '’', '´', '…', '…');
$tab = str_replace($search, $replace, $tab);
return $tab;
}
Code Javascript, qui apparement n'aime pas les tableaux dans le replace()
Code :
function encodeUTF8(chaine)
{
search = new Array('é', 'è', 'ê', 'ë', 'à', 'ä', 'â', 'ù', 'û', 'ô', 'ö', 'ç', 'î', 'ï', 'œ', 'É', 'È', 'Ê', 'À', 'Ç', '"', '“', '”', '«', '»', "'", "'", "‘", "’", "'", "...", "…");
replace = new Array('é', 'è', 'ê', 'ë', 'à', 'ä', 'â', 'ù', 'û', 'ö', 'ö', 'ç', 'î', 'ï', 'œ', 'É', 'È', 'Ê', 'À', 'Ç', '"', '“', '”', '«', '»', ''', ''', '‘', '’', '´', '…', '…');
for(var i=0; i<=search.length; i++)
{
chaine = chaine.replace(search[i], replace[i]);
}
return chaine;
}
Edit : Il y a de l'avancement, j'ai rajouté un for(var i=0; i<=search.length; i++) au dessus du chaine.replace, ça marche tant qu'il n'y à pas plus d'un seul caractère à modifier dans chaque cas.
exemple : si j'ai une chaine avec "é, ô, à, è, é, à", je me retrouve avec "'é, $ocirc;, à, è, é, à"...
Si vous avez une piste pour régler ce problème d'accents qui apprécient pas l'Ajax, je suis preneur. :bave:
Re-Edit : finalement je la joue bourrin, j'ai copier-coller la fonction php encodeUTF8 que j'ai renommé et j'ai remplacer les & par des | dans $replace, et sur l'évènement, j'appelle cette fonction. Et je retraduit après en php, avant le traitement Ajax.