Rechercher : dans
Par :

Traitement de caractère speciaux

Dernière réponse le 16 jui 2008 à 18:07:22 -CCM-, le 16 jui 2008 à 12:00:00 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « traitement de caractère speciaux » dans :
[CCM] Utiliser des caractères spéciaux VoirVous pouvez utiliser des caractères spéciaux dans vos messages sur les forums de CCM. Vous pouvez: Soit utiliser la table de caractères Windows (charmap.exe) et copier-coller les caractères dans le message. Soit utiliser les entités...
Oracle - Echappement de caractères spéciaux VoirPour certaines requêtes SQL, nous avons besoin de rechercher des chaînes de caractères contenant des caractères spéciaux tels que '%' Dans l'exemple suivant, qui est faux, le besoin est de trouver les enregistrements contenant au milieu le...
Utiliser des accents et autres caractères spéciaux VoirDans la plupart des langages de programmation, on ne peut utiliser directement les accents et autres caractères non-anglosaxon. La solution est l'unicode, une sorte de code universel. Par exemple pour afficher la chaine de caractères : " là, ça...
Caractères spéciaux HTML VoirCodage des caractères spéciaux Le standard HTML demande de respecter le codage des caractères ASCII 7 bits, c'est-à-dire que les caractères accentués ne sont pas autorisés. Il faut pour cela utiliser un codage particulier. Pour...

1

nEm3sis, le 16 jui 2008 à 12:07:34

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

Répondre à nEm3sis

2

Alkaaran, le 16 jui 2008 à 12:09:03

Salut,

$url = rawurlencode($url); ne marche pas ?

Répondre à Alkaaran

3

-CCM-, le 16 jui 2008 à 13:24:28

Merci a vous.

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

é : %E9
è : %E8
espace : %20 ... :(

Répondre à -CCM-

4

Alkaaran, le 16 jui 2008 à 13:30:26

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

Répondre à Alkaaran

5

-CCM-, le 16 jui 2008 à 14:18:44

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

Répondre à -CCM-

6

Alkaaran, le 16 jui 2008 à 14:24:28

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

Répondre à Alkaaran

7

-CCM-, le 16 jui 2008 à 14:57:24

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>

Répondre à -CCM-

8

Alkaaran, le 16 jui 2008 à 15:34:03

Et avec <a href="/docs/$type/$url" target="_blank"> ?

Répondre à Alkaaran

9

croy, le 16 jui 2008 à 15:45:26

As-tu essayé htmlspecialchars ?

Répondre à croy

10

-CCM-, le 16 jui 2008 à 16:16:48

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!?

Répondre à -CCM-

11

croy, le 16 jui 2008 à 17:25:03

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 ?

Répondre à croy

12

-CCM-, le 16 jui 2008 à 17:52:30

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 ...

Répondre à -CCM-

13

croy, le 16 jui 2008 à 17:56:42

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 ?

Répondre à croy

14

-CCM-, le 16 jui 2008 à 18:01:32

Si je me met en utf, il va faloire me rettaper tout les accent pour avoir un affichage correcte ... non?


je suis sous notepade ++

Répondre à -CCM-

15

 croy, le 16 jui 2008 à 18:07:22
  • +1

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é.

Répondre à croy
Collection CommentÇaMarche.net