probleme pour ajouter fonc.. supprimer ts les carac..s spéc

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme pour ajouter fonc.. supprimer ts les carac..s spéc

par papayou_s » 23 févr. 2009, 17:12

ok merci je vais regarder
comme ça ne marcher j'ai tous annulé
je vais réessayer

par Aureusms » 23 févr. 2009, 11:36

Bonjour à tous,

$search[] = $literal est juste un exemple.


Si je reprends ton dernier POST :
je dois utiliser les fonctions utf8_encode() et utf8_decode() dans la page du plugin , car dans les pages du portail ,d'autre plugins envois des infos dans la base comme celui ci est ça marche

dans ma page j ai trouvé ça et je l ai mi en place .
et ça plante

string utf8_decode ( string $row )

mais information sont dans quel variables

$inputstr
$fieldname
$fieldtype
$row
As tu mis tel quel "string utf8_decode ( string $row )" ou as tu mis "$row = utf8_decode($row);"

Pour savoir où sont tes variables tu fais un echo() juste en dessous de tes variables. Cela te permettra d'afficher leur contenu.

Je pense que cela devient pour toi un peu confus. Essaye de nous montrer un exemple qui ne marche pas. (ou tu as les accents mal mis) Puis essaye de trouver où le code est créé (ou reviens vers nous pour qu'on te guide). Surtout ne mets pas toute tes pages ici... juste des morceaux.

par papayou_s » 23 févr. 2009, 11:24

bonjour excusez moi j'ai eu un probleme avec mon ordi
pouvez vous me donner encore des infos sur ses deux variables

elles proviennent de qu elle ligne

$search[] = $literal

par Berzemus » 17 févr. 2009, 11:43

L'UTF-8 gère les accents normalement. Essaye plutôt <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"> pour les écritures européennes et iso-8859-15 pour gérer le iso-8859-1 + le signe euro.
UTF-8 peut encoder n'importe quel caractère unicode, et y'en à environ 100.000. Si l'utf-8 gère le japonais et le luxembourgeois, il peut parfaitement gérer les lettres accentuées. (unicode a pour vocation de réunir tous les alphabets du monde entier tel qu'il est grand mais fini)

Un petit aperçu (encore faut-il avoir les librairies correctes pour les afficher, ces alphabets):
http://ourworld.compuserve.com/homepage ... f8-jap.htm

Il faut donc juste s'assurer que les scripts php soient bien enregistrés au format utf-8 (et remettre la page dans son format originel: pour peu que des données viennent d'une DB, ça risque de foirer), et s'assurer que les chaines traitées soient bien toutes au format UTF-8.

Après, pour remplacer proprement tout les caractères spéciaux, les expressions régulières fonctionnent à merveille, du style:
preg_replace("#\W#","",$a_remplacer);

et pour les caractères accentués, j'ai péché je ne sais plus ou cette fonction:
function unaccent($text) 
  {
  static $search, $replace;
  if (!$search) 
    {
    $search = $replace = array();
    $trans = get_html_translation_table(HTML_ENTITIES);
    foreach ($trans as $literal => $entity) 
      {
      if (ord($literal) >= 192) 
        {
        $search[] = $literal;
        $replace[] = $entity[1];
        }
      }
    }
  return str_replace($search, $replace, $text);
  }
Je trouve original et fonctionnel. Juste que get_html_translation_table retourne les lettres au format iso-8859-1, donc il faut faut remplacer
 $search[] = $literal;
par
 $search[] = utf8_encode($literal);
Et sinon, pour gérer de gros soucis avec les encodages, php contient quelques extensions bien pratiques, comme mbstring.

par Invité » 17 févr. 2009, 10:53

un autre message d'aide s'il vous plais

par papayou_s » 10 févr. 2009, 19:22

je dois utuliser les fonctions utf8_encode() et utf8_decode() dans la page du plugin , car dans les pages du portail ,d'autre plugins envois des infos dans la base comme celui ci est ça marche

dans ma page j ai trouvé ça et je l ai mi en place .
et ça plante

string utf8_decode ( string $row )

mais information sont dans quel variables

$inputstr
$fieldname
$fieldtype
$row

par mere-teresa » 10 févr. 2009, 17:30

As tu essayé du utf8_encode() ou utf8_decode() selon ton problème ?
Ou encore d'ajouter en PHP : header('Content-Type: text/html; charset=utf-8');

par papayou_s » 10 févr. 2009, 16:21

bonjour

oui , j ai vu que j avais fais une erreur je l'ai enlevé " mais ça marche toujours pas
j avais laissé $texte car dans la page de code . il y a la variable texte
et comme cité plus au je ne sais pas dans quel variable se retrouve mes données texte
car plusieur variable et c'est pas moi l auteur du plugin
les variables

$fieldname
$fieldtype
$inputstr

ou peut etre une autre

par Aureusms » 10 févr. 2009, 11:03

Bonjour,

As tu mis quelque chose dans $texte ?
car si je lis :
$tab_accentue = array ("à","á","â","ã","é","À","Á","Â","Ã","Ä","Å","ä","å","Ò","Ó","Ô","Õ","È","É","Ê","Ë","è","ê","ë""); 
$tab_non_acentue = array ("a","a","a","a","e","A","A","A","A","A","A","a","a","O","O","O","O","E","E","E","E","e","e","e"); 

$texte_remplace = str_replace ($tab_accentue,$tab_non_acentue,$texte); 
il y a déjà une erreur ..."ê","ë""); ici

et je ne sais pas si tu as utilisé $texte i.e si $texte = "mot"; ou quelque chose comme cela .
Juste pour te dire que $texte peux aussi être $message, $cequetuveux, "unmot", "une phrase complète". Pour cela, j'ai changé $texte par $texte_remplace plus haut pour que tu comprenne mieux

par papayou_s » 08 févr. 2009, 23:37

j ai touvé ça dans une page de mon portail

cette fonction fais parti d une class
voici les nom des fonction qui en font parti

function CXml
function Set_xml_data
function _startElement
function _endElement
function _cData

function _cleanString( $string )
{
return utf8_decode( trim( $string ) );
}

et j ai trouvé ça dans un autre fichier e_parse_class.php
// Is $str a UTF8 string?
	$utf8 = ($utf || CHARSET == 'utf-8') ? "u" : "";

voila ou j ai mi ton code
    {
         $message = ATOLL_ADMIN_MEDIA_04;
         unset($_POST['update']);
      } 
      else 
      {
         if ($debug) print "<br>".mysql_error()."<br>";
         $message = ATOLL_ADMIN_MEDIA_05;
      }
   }
   
$tab_accentue = array ("à","á","â","ã","é","À","Á","Â","Ã","Ä","Å","ä","å","Ò","Ó","Ô","Õ","È","É","Ê","Ë","è","ê","ë""); 
$tab_non_acentue = array ("a","a","a","a","e","A","A","A","A","A","A","a","a","O","O","O","O","E","E","E","E","e","e","e"); 

$texte = str_replace ($tab_accentue,$tab_non_acentue,$texte);


// Obtenez les détails de la Base de Donner et Edit, sinon ensemble de données POST
   if (isset($_POST['edit'])) 
   {
      $sql -> db_Select($atolltable, "*", " $primaryid='".$_POST['existing']."' ");
      
      $row = $sql->db_Fetch();      
   } 
[/php]

par Aureusms » 08 févr. 2009, 20:24

L'UTF-8 gère les accents normalement. Essaye plutôt <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"> pour les écritures européennes et iso-8859-15 pour gérer le iso-8859-1 + le signe euro.

Sinon as tu une des ces deux fonctions quelque part utf8_encode() ou utf8_decode()? Je pense que tu encode quelque chose de déjà encoder.
Pour t'aider montre moi le bout de code où tu as mis le mien (juste un bout). Pense aussi à mettre le contenu des variables au cas où.

par Invité » 08 févr. 2009, 07:30

j'ai ça
<meta http-equiv='content-type' content='text/html; charset=utf-8' />

par Aureusms » 07 févr. 2009, 23:59

Oui mais là tu as quoi (à cette ligne): <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1">

par papayou_s » 07 févr. 2009, 21:12

cette page que je viens de presenter en haut proviens d un plugin .
l entete que tu me dis et ou c'est le portail qui la genere

j ai afficher source dans mon navigateur et j ai ça

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang="en">
<head>
<title>e107 générateur de site web : Admin Area</title>
exct...

donc mon probleme serai du à ça

par Aureusms » 07 févr. 2009, 20:17

C'est dû à l'encodage de ta page. Qu'as tu comme en-tête HTML ? (là où tu devrais avoir comme par exemple : )

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1">