Archives
Merci je suis ravi;
J'espère voir le résultat!
Il y a beaucoup de bonnes choses dans ta page mais je n'ai pas reussi a resoudre mon probleme...
Je fais passer de javascript vers PHP une string en langue etrangere en l'encodant avec la fonction escape.
J'ai donc un truc du style :
var str=escape(stranger)
"http://www.popo.com/popo.php?s="+str
Mais la chaine arrive sur ma page
popo.php de la forme : %u05DE%u05E1%u05E2%u05D3%u05D4
J'ai utilise ta super fonction unicode_decode qui permet d'afficher cette chaine et ca marche.
Mais comment je peux faire si je veux manipuler cette chaine par exemple l'envoyer en query string de google? Il me faudrait une chaine du genre:
%AA%D7%9E%D7%95%D7%A0%D7%95%D7%AA
Je suis un peu perdu donc si quelqu'un a une idee...
Est-ce que tu veux faire ça en PHP ou en Javascript?
En Javascript, c'est pas génial, tu es obligé de fabriquer une moulinette.
Par contre en PHP, comme je l'ai dit (mais c'est le fouillis), tu peux utiliser un truc comme ça:
$urlparam= rawurlencode(unicode_decode($_REQUEST["s"]));
Ou, si tu veux que les espaces soient convertis en «+» plutôt qu'en «%20»: urlencode().
J'ai fini par trouver la bonne fonction javascript :
encodeURIComponent
Elle n'est valide que pour IE 5.5+, Netscape 6+ et Mozilla...
Merci Ano (?)
Grâce à toi j'ai enrichi un peu le message – qui devient de plus en plus charabia!
PS: Tu peux laisser un pseudo et/ou un lien vers ton site, en choisissant de laisser un commentaire avec le réglage Other ou Autre plutôt que Anonymous ou Anonyme, si tu veux.
salut
je cherchais à transmettre des valeurs saisies dans un formulaire via javascript (pour une application en ajax) dans une url pour être ensuite interprété par un script PHP.
Franchement l'encodage des caractères ca me dépasse totalement : je galère systématiquement là-dessus.
hé bien je crois que j'ai écrit la bonne fonction pour la situation qui me concerne :
function encodeMonTexte(texte) {
URIencode = encodeURIComponent(texte);
retour = URIencode.replace(/'/g, "\\'");
return(retour);
}
voilà.
Merci Jérôme, voilç qui pourra servir à autrui ! (^_^)
Jérôme M. ?
Merci à Jérome & bien sur à jesus2099, car cette fonction
function encodeMonTexte(texte) {
URIencode = encodeURIComponent(texte);
retour = URIencode.replace(/'/g, "\\'");
return(retour);
}
m'a vraiment servi !!!
Baudouin
Salut, grace à toi je viens de m'apercevoir que mon nettoyage en php de code alphanumérique ne marche pas si la variable est "ça 2 "_'-+*/²&$ RFC1738 エンコーディング tiếng Việt"
echo ereg_replace( '[^a-z0-9_]', '', "ça 2 "_'-+*/²&$ RFC1738 エンコーディング tiếng Việt" );
résultat: a2rfc17381245612531124671254012487124511253112464ti7871ngvi7879t
si je fais le même traitement en javascript ça marche.
var chn = "ça 2 "_'-+*/²&$ RFC1738 エンコーディング tiếng Việt";
var exp = RegExp( "[^a-z0-9_]", "g" );
alert( chn.replace( exp, '' ));
résultat:
a2_rfc1738tingvit
mais mon but est d'avoir ce même résultat en php car parfois je ne passe pas par le javascript pour mon nettoyage.
Aurais tu une solution ?
Laurent
Oui, j'ai une solution :-)
En fait, chez moi ça marche mais le truc c'est que tu dois avoir des &xXXXX; dans ta chaîne, à la place des caractères spéciaux.
En fait je ne pense pas que tu fasses directement ereg_replace( '[^a-z0-9_]', '', "エンコーディング" );. Je pense que tu fais plutôt ereg_replace( '[^a-z0-9_]', '', $str ); et que tu récupères $str de je ne sais où.
Donc il faut que tu tranforme tes &xXXXX; en caractères avant de faire le ereg_replace(). Il existe une fonction pour ça : html_entity_decode($str, ENT_COMPAT, "UTF-8").
Mais si, comme dans mon PHP, tu as un bug (cannot yet handle MBCS), tu peux utiliser la fonction de remplacement qui est proposée dans la page du bug (bug #25670).
Voici une démo de ce que tu veux faire : encodeLaurent.php (source)
PS. juste au cas où. Si tu veux aussi garder les lettres majuscules, tu peux utiliser ereg_replace('[^a-zA-Z0-9_]', ...
PPS. Dis-moi quand je pourrais supprimer encodeLaurent.*
c'est super merci beaucoup
Ta fonction unicode_decode() est aussi utile que simple
Merci ça marche comme ça mais ce n'est pas correct, pourquoi ?
parceque ça ne converti pas ta chaine $strhtml exactement comme $str.
Dans le traitement telle que je te l'ai donné ça marche uniquement.
D'ailleurs nombre de personne on réécrit la fonction html-entity-decode
voir http://www.php.net/manual/fr/function.html-entity-decode.php
je vais me faire ma fonction aussi (je te la posterai qd elle sera au point si tu le veux).
Je te remerci de m'avoir répondue, tu peux effacer encodelaurent.
Bonjour,
J'utilise un formulaire qui renvoie les $_POST[""] sur la même page et les réaffiche dans leur champs texte. Je voudrais afficher les valeurs telles que je les ai saisies et non pas avec les caractères au format "URL" (pour ensuite 're-submit' au bon format et réafficher sans les caratères spéciaux).
Comment puis-je faire ?
Merci,
Gwendal.
Bonjour, j'ai bien regardé toute la page, mais je n'est pas trouvé ce que je cherchais:
A partir d'une requete Ajax, je transmet des informations encodées par escape à mon fichier php.
Je reçois donc des caractères du type %u30B8. Le problème est que je n'arrive pas à les décoder, et j'ai forcément besion de les décoder (je dois comparer si 2 chaînes sont identiques). Y'a t-il un moyen de le faire?
merci
Salut tadkozh,
Ma page est un peu en vrac, mais il est bien écrit dedans, comment transformer les %uXXXX en caractères unicode. Il faut utiliser une fonction vachtement bien faite, par un anonyme : unicode_decode.
Et ça marche très bien! :)
Bonne continuation!
Ici pas de langage SMS du style eh mé c tro for t tou puiçan toa !
. Si je suis de bonne humeur et que j'ai le temps je traduis, mais j'ai maintenant plutôt tendance à supprimer.
Ajouter un commentaire ← PAS DE SMS !
Si si :) Moi ça m'a beaucoup servi :)
Merci beaucoup, tu m'as évité des heures de galère :)