8791 sujets

Développement web côté serveur, CMS

Bonjours à tous,
Voila, enfaite j'ai récupérer un script qui était anglais !
Donc j'ai rencontré quelque problème avec l'encodage !
Et puis j'ai trouvé un fichier "include.php" qui dispose du code ci-dessous.
Qui je pense fait une auto translation de certain caractère, et donc ca me mange des caractères telle que le "é" qui devient donc invisible !
Donc j'ai essayé de supprimé ce bous de code, mais je rencontre des problèmes !
J'ai essayé de modifier quelque truk, mais rien à faire !

Malheureusement je ne m'y connait pas trop en php, bien que je suis en train d'apprendre !

Merci d'avance pour votre aide

<?php 

setlocale(LC_ALL, 'en_US.UTF8');

function simpleCONV($str)
{
	$ltrs = '';
    $oldch = array("ö", "ç", "é", "ß", "i", "s", "I", "g");
    $newch   = array("o", "c", "e", "b", "i", "s", "I", "g");

    $dorplc = str_replace($oldch, $newch, $str);

    return $ltrs;
}

function clearUTF($s)
{
    $r = '';
    $s1 = iconv('UTF-8', 'ASCII//TRANSLIT', $s);
    for ($i = 0; $i < strlen($s1); $i++)
    {
        $ch1 = $s1[$i];
        $ch2 = mb_substr($s, $i, 1);

        $r .= $ch1=='?'?$ch2:$ch1;
    }
    return $r;
}

function slug($string)
	{
	    $string= strtolower(trim($string));
		$string= substr('' .$string. '', 0, 40);
	    $string= preg_replace('/[^a-z0-9-]/', '-', $string);
	    $string= preg_replace('/-+/', "-", $string);
		$string= substr_replace($string ,"",-1);
	    return $string;
	}
	
   	?>

Modifié par TaCosS (02 Sep 2010 - 15:26)
Salut,

ben c'est le problème quand on récupère un code qu'on ne comprend pas. Smiley cligne

Il faudrait connaître le détail de ta configuration (encodage de ton serveur, de tes documents, de tes tables éventuelles et de ta connexion) mais je dirais qu'il faudrait essayer de ne plus faire l'include de cette page et de supprimer l'appel à toutes ses fonctions dans le reste du code (simpleCONV, clearUTF et slug).

Et si ça ne fonctionne pas trouver un équivalent francophone à ce script anglais. Smiley murf
Toutes mes pages disposent de:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />



Et après la connexion à la base Mysql , j'ai mis :
mysql_query("SET NAMES 'utf8'");


Toutes mes pages sont Encoder en UTF-8 sans BOM .

Et dans PHPmyadmin, l'interclassement est
utf8_general_ci


Et malheureusement avec tout ca, je n'arrive pas à afficher les caractères spéciaux, quand j'envoie une Phrase ! Je ne sais pas où elle vont Smiley decu

Et j'ai déjà essayé de supprimer tout les includes rien à faire, ca fait bugé xD

Merci de ta réponse ! Smiley cligne
Modérateur
La fonction simpleCONV(), c'est du grand art...
l'etset "ß" est remplacé par un "b" Smiley biggol et ... Smiley cligne

Pour te donner une première piste, chapitre 8 (menu droite) et un autre tuto dans la même thématique (menu gauche) de ce lien
Modifié par niuxe (03 Sep 2010 - 04:05)
TaCosS a écrit :
Et j'ai déjà essayé de supprimer tout les includes rien à faire, ca fait bugé
Il ne faut surtout pas "supprimer tout les includes" mais seulement celui dont tu donnes le code plus haut. Ensuite, pour préciser un peu ce que je te disais il faut supprimer l'appel à ces 3 fonctions donc par exemple remplacer
echo simpleCONV($ma_variable);
par
echo $ma_variable;


niuxe a écrit :
La fonction simpleCONV(), c'est du grand art...
l'etset "ß" est remplacé par un "b"
Salut niuxe EX : Nolem, Smiley smile

cette fonction n'est pas si délirante que ça puisque ça correspond au fonctionnement d'iconv //TRANSLIT.
Modérateur
Heyoan a écrit :
cette fonction n'est pas si délirante que ça puisque ça correspond au fonctionnement d'iconv //TRANSLIT.


Hello Heyoan, Smiley smile

Je ne suis pas d'accord avec toi. La fonction iconv retranscrit très bien l'etset. En Allemand l'etset peut être remplacé par "ss" puisque ça se prononce ainsi. ex : weiss = weiß (blanc)


<?php
//jolie fonction sur un forum ou sur un document php, mais en fait, elle sert à rien.
function simpleCONV($str){

    $ltrs = "";
    $oldch = array("ö", "ç", "é", "ß", "i", "s", "I", "g");
    $newch   = array("o", "c", "e", "b", "i", "s", "I", "g");
    
    $dorplc = str_replace($oldch, $newch, $str);
    
    return $ltrs;

}

$une_chaine = "une chaine avec des caractères indiqués dans le vieux tableau : ö - ç - é - ß - i - s - I - g";

echo simpleCONV($une_chaine);

$s = "ß";

$s1 = iconv('UTF-8', 'ASCII//TRANSLIT', $s);

echo $s." - ".$s1;
?>


Peut être que le développeur a forcé sur l'absinthe ou s'est trop inspiré d'une toile de Picassiette (coloration syntaxique) ? Un peu de couleur que diable dans ce monde de brutes ! xD
Modifié par niuxe (03 Sep 2010 - 10:32)
niuxe a écrit :
La fonction iconv retranscrit très bien l'etset.
Ce n'est pas de cela que je parlais : je disais qu'il s'est basé sur le fonctionnement d'iconv //TRANSLIT pour remplacer ce caractère par un b ce qui peut être tout à fait pertinent dans le cas par exemple d'un nom de répertoire à créer. Smiley cligne
Modérateur
Heyoan a écrit :
Ce n'est pas de cela que je parlais : je disais qu'il s'est basé sur le fonctionnement d'iconv //TRANSLIT pour remplacer ce caractère par un b ce qui peut être tout à fait pertinent dans le cas par exemple d'un nom de répertoire à créer. Smiley cligne


Il n'y a rien de pertinent puisque c'est faux !
traduction exact a écrit :

Mein Repertoire ist weiss (weiß) = Mon répertoire est blanc (blanc)


l'artiste a écrit :

Mein Repertoire ist weib = Mon répertoire est femme

Smiley biggol

J'ai bien saisie qu'il s'est basé sur iconv() et je l'entend bien ainsi. Cependant, cela me fait penser à ceci : Smiley rasta . Le développeur a dû forcé un peu trop dessus et dans ses délires psyché a voulu réinventer la roue carré... Smiley murf
Modifié par niuxe (03 Sep 2010 - 11:12)
OK : je te propose qu'on arrête d'encombrer le sujet de TaCosS avec nos réflexions existentielles qui ne doivent pas le passionner...
Lol au final je sais plus trop quoi faire xD, En tout cas merci de votre intéret que vous porter à mon sujet !
Donc au final je fait ce que ma dit Heyoan5

Heyoan a écrit :
Il ne faut surtout pas "supprimer tout les includes" mais seulement celui dont tu donnes le code plus haut. Ensuite, pour préciser un peu ce que je te disais il faut supprimer l'appel à ces 3 fonctions donc par exemple remplacer
echo simpleCONV($ma_variable);
par
echo $ma_variable;


Salut niuxe EX : Nolem, Smiley smile

cette fonction n'est pas si délirante que ça puisque ça correspond au fonctionnement d'iconv //TRANSLIT.