Traitement de caractère speciaux

Résolu/Fermé
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 16 juil. 2008 à 12:00
timesi Messages postés 48 Date d'inscription mercredi 17 mars 2010 Statut Membre Dernière intervention 14 août 2015 - 13 févr. 2012 à 14:31
Bonjour,
Existe t-il une fonction pour transformer les caractures é è à ... en valeur hexa ou decimal ?

Je voudrais remplacer ces lignes :

$url = str_replace ( ' ' , '%20' , $url );
$url = str_replace ( 'é' , '%c3%a9' , $url );
$url = str_replace ( 'è' , '%C3%A8' , $url );
$url = str_replace ( 'à' , '%C3%A0' , $url );


par la fonction appropriée, j'ai deja utilisé :

rawurlencode($url);
rawurlencode(utf8_encode($url));
rawurlencode(utf8_encode($type));
rawurldecode(utf8_decode(rawurlencode( '$url')));
utf8_encode($url);


Et d'autres fonction s mais en vain.
MErci
A voir également:

16 réponses

croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
16 juil. 2008 à 18:07
Avec notepad++, que je n'ai pas sous la main, il me semble qu'il y a un menu Format qui permet de choisir l'encodage.

Choisis utf-8 sans BOM.

Normalement le fichier en cours est automatiquement transcodé.
3
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
16 juil. 2008 à 17:25
Comment est codé le fichier html qui contient ta balise <a.... ?

En d'autres termes, est-ce-qu'il contient une balise <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ? quelle est la valeur du charset ?

Ce fichier html est généré par un script php : comment est codé ce script ? utf-8 ?
3
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
16 juil. 2008 à 15:45
As-tu essayé htmlspecialchars ?
2
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 13:24
Merci a vous.

Non la fonction rawurlencode ,n'est pas la bonne.
Elle me retourne

é : %E9
è : %E8
espace : %20 ... :(
1
Alkaaran Messages postés 285 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 3 novembre 2009 37
16 juil. 2008 à 13:30
Le truc encore plus simple, tu crée ta propre fonction :
fonction url_en_hexa( $url ) {
$url = str_replace ( ' ' , '%20' , $url );
$url = str_replace ( 'é' , '%c3%a9' , $url );
$url = str_replace ( 'è' , '%C3%A8' , $url );
$url = str_replace ( 'à' , '%C3%A0' , $url );
return $url ;
}
Que tu utilise comme bon te semble après ...
$url = url_en_hexa( $url );

Par contre le problème c'est que ca ne marchera que pour les caractères définis...
Sinon il y a la fonction string_recode(), mais celle-ci renvoie toute la chaîne en caractères ascii (donc héxa) :http://fr3.php.net/manual/fr/function.recode-string.php
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 14:57
urlencode remplace les caractère speciaux par les codes :

é : %E9
è : %E8 ...

Sous firefox les url passé par urlencode ne fonctionnent pas (enfin en local après je ne sais pas)

Mon site n'est pas hébérgé, je suis en local sous EasyPhp .

Grossomodo ce que je fait :

$query = "SELECT titre,description,nom_fichier,format,langue,type  FROM fichiers ORDER BY titre";
$result = mysql_query($query);

// Fonction de recuperation et d'affichage des resultats 
while($row = mysql_fetch_row($result)){

// Enregistrement des resultats dans des variables
$titre 	= $row[0];
$desc	= $row[1];
$url 	= $row[2];
$logo	= $row[3];
$langue	= $row[4];
$type   = $row[5];

//Remplacer les caractère speciaux pour que les url soient valides sous FFox

$url = str_replace ( ' ' , '%20' , $url );
$url = str_replace ( 'é' , '%c3%a9' , $url ); .......

//ensuite créaton d'un url en fonction des noms de fichiers :
<a href=/docs/$type/$url target=_blank>

1
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
16 juil. 2008 à 12:07
edit 1 :
a mince je répond le mauvais langage >_<
dsl j'ai rien dit

edit 2 :
http://www.manuelphp.com/php/function.ord.php associé avec une liste contenant tout les caractères que tu veux remplacer ça devrais aller
0
Alkaaran Messages postés 285 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 3 novembre 2009 37
16 juil. 2008 à 12:09
Salut,

$url = rawurlencode($url); ne marche pas ?
0
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 14:18
Je pensais qu'il existait une fonction....

Comment fait on alors pour réaliser un lien url du type :

http://www.mondomaine.com/môn dôssiêr/document àvéc dés caractères spéciàux.pdf

Moi j'ai dans ma BDD les noms des dossiers et des documents que je concatène pour en faire un lien...
Est-ce bien de cette manière ?
Merci
0
Alkaaran Messages postés 285 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 3 novembre 2009 37
16 juil. 2008 à 15:34
et avec <a href="/docs/$type/$url" target="_blank"> ?
0
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 16:16
Alkaraan :
<a href="/docs/$type/$url" target="_blank">

Me donnerais :
sous IE : http://www.domaine.com/docs/Météo/A.pdf --> le lien marcherais
sous FF le lien se transforme automatiquement en : http://www.domaine.com/docs/M%E9t%E9o/A.pdf --> de plus le lien ne marcherais pas


Forbidden

You don't have permission to access /docs/Météo/A.pdf on this server.



Alors qu'avec des : /docs/M%c3%a9t%c3%a9o/A.pdf sa marche nickel sous FF et IE.

J'ai lu beaucoups de forum et ni htmlspecialchars ni htmlenties ne resouds ce problème...
Mais c'est vrais que je n'ai pas testé...

Comment sont généralement réaliser les liens avec accent et espaces pour qu'il soient compatibles avec IE FF et les autres navigateurs!?
0
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 17:52
j'ai volontairement choisi le charset=iso-8859-15 pour l'affichage des accent et des caractères eurpoéens (euro, autres accents à ).
pour le php, je ne vois pas ou récuperer le codage du scrip php ...
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
16 juil. 2008 à 17:56
Les codes que tu cherches à utiliser et qui sont dans les url transformées (c3a9 pour é par exemple) sont de l'utf-8 et non de l'iso-8859-15.

Essaye de passer en utf-8.

Quel éditeur utilises-tu ?
0
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 18:01
Si je me met en utf, il va faloire me rettaper tout les accent pour avoir un affichage correcte ... non?


je suis sous notepade ++
0
Une idée peut être :

utf8_decode( rawurlencode( utf8_encode( $lien ) ) )
0
timesi Messages postés 48 Date d'inscription mercredi 17 mars 2010 Statut Membre Dernière intervention 14 août 2015 6
13 févr. 2012 à 14:31
Bonjour,

Comment faire pour que ce code fonctionne pour s'afficher sur ma page:

https://www.facebook.com/login.php?skip_api_login=1&api_key=155933657817598&signed_next=1&next=https%3A%2F%2Fwww.facebook.com%2Fdialog%2Fstream.publish%3Fapp_id%3D155933657817598%26redirect_uri&cancel_url=https%3A%2F%2Fwww.facebook.com%2Fdialog%2Freturn%2Fclose%3Ferror_code%3D4201%26error_message%3DUser%2Bcanceled%2Bthe%2BDialog%2Bflow%23_%3D_&display=popup&locale=fr_FR
https://www.facebook.com/&action_links=&attachment={%27caption%27:%27%3Cfb:chat-invi
te+msg%3D%22Viens decouvrir une page vraiment geniale: http://www.facebook.com/aumoins1demesamisestAlcoolique%22+condensed%3D%22false%22+excl
ude_ids%3D%221,2,3%22http://t.co/q3EzkPR%22+always_post_to_friends%3D%22false%22%3E
%3C/fb:chat-invite%3E%27,%27properties%27:{%27Page%27:{%27text%27:%27FBML%20Educatio
n%27,%27href%27:%27https://www.facebook.com/aumoins1demesamisestalcoolique%27}}}&traget_id=107278022
683159

Ma page est www.facebook.com/aumoins1demesamisestalcoolique & l'on me dit qu'il faut utiliser le deuxième maillont de mon deuxième lien vers ma page. Alors qu'est ce que cela donne ???

Merci beaucoup ! :)
0
Alkaaran Messages postés 285 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 3 novembre 2009 37
16 juil. 2008 à 14:24
C'est la bonne manière, mais je ne comprends pas pourquoi urlencode ne marche.. tu aurais plus d'infos ? ou pourrais-tu carrément nous passer l'adresse de ton site et des fichiers à caractères spéciaux
-1