Problème de fonction avec include()

WRInaute discret
Bonjour,

J'ai un drôle de problème, J'ai jamais eu de problème en utilisant le include() de php mais j'en ai un et je suis incapable de le régler. J'ai une fonction que lorsque elle est dans le document direct elle fonctionne très bien mais si elle est dans un autre fichier et que ce fichier est appellé avec le include la fonction fonctionne pas bien.

La fonction est des simples str_replace() pour régler le problème d'un document copié et collé en provenance d'un document Microsoft Word dans un formulaire HTML. Certains caractères comme “ ” ‘ ne fonctionne pas bien.

Voici ma fonction :
Code:
function word_to_html($text){// for copy and paste from Microsoft Word
	$text = str_replace("“", "“", $text);
	$text = str_replace("”", "”", $text);
	$text = str_replace("‘", "‘", $text);
	$text = str_replace("’", "’", $text);

	return $text;

}

Donc si la fonction est dans le même fichier qui l'appelle tout fonctionne, les caractères sont changé en caractères HTML. Mais si je met la fonction dans un include parceque j'ai plus d'une page qui a besoin de la fonction, ça fonctionne plus.

J'ai fait une test, j'ai ajouté d'autres caractères:
Code:
function word_to_html($text){// for copy and paste from Microsoft Word
	$text = str_replace("“", "“", $text);
	$text = str_replace("”", "”", $text);
	$text = str_replace("‘", "‘", $text);
	$text = str_replace("’", "’", $text);
	$text = str_replace("<", "<", $text);
	$text = str_replace(">", ">", $text);
	$text = str_replace("?", "?", $text);
	$text = str_replace("%", "%", $text);

	return $text;

}

Résulat, ça fonctionne pour toutes les autres caractères excepté les 4
premiers et ces ceux là qui me cause des problèmes.

Au secours!!
 
Nouveau WRInaute
Bonsoir,

Code:
 $text = str_replace("<", "<", $text); 
   $text = str_replace(">", ">", $text); 
   $text = str_replace("?", "?", $text); 
   $text = str_replace("%", "%", $text);

Ces 4 lignes ne font rien... car elles remplacent un caractère par le même caractère (pb de copier/coller)... ce qui te donne l'impression qu'elles fonctionnent, mais en fait, elles ne doivent pas mieux fonctionner que les 4 premières.

Pour ma part, je ferai dans la fonction le premier str_replace sur $text puis après :

$str_text = str_replace("'","'",$text);
$str_text = str_replace("'","'",$str_text);

(en mettant bien les bons caractères entre les doubles quotes " ")

etc...

et la fin :

return $str_text;

Cela fonctionne, j'ai une fonction comme cela...

Je ne suis pas un expert, mais le php doit se mélanger les pinceaux entre la variable d'appel et ta variable interne de fonction...comment ferait-il pour savoir faire la différence...elle porte toutes les deux le même nom.

A+
 
WRInaute discret
Oups!

Dans la fonction ce n'est le même caratère, le > est remplacé par &#62. Et c'est ainsi pour toutes les autres. Je remplace les caractères par son code HTML. Evidement ici on le voit pas parceque le naviguateur interprète le html.

Code:
str_replace(">", "Le code html", $text);
 
WRInaute impliqué
On dirait un problème de codage de caractères ?

Si certains ordres de ta fonction fonctionnent c'est que l'include est ok et que la fonction fait son travail. Maintenant il semble que lorqu'elle provient d'un autre fichier certains caractères ne soit plus correctement interprétés est-ce le même editeur qui a fait le fichier include et l'autre fichier ou tu as l'include dedans ?
Est-ce que tu les publies de la même façon par exemple en binaire si c'est pas ftp ?

C'est une piste.

A+
 
WRInaute discret
J'ai finalement trouver la fonction pour régler mon promlème
du copie coller d'un document word à un formulaire HTML.


Code:
function convert_word_to_html($string){

	$text = htmlentities($string, ENT_QUOTES,'UTF-8');

	return $text;

}
 
Discussions similaires
Haut