Page 1 sur 1

apostrophes de word

Posté : 23 nov. 2020, 06:01
par dick-perron
Bonjour,
J'ai un script dans lequel j'ai une variable (appelons-la $commentaire) qui est reçue d'un formulaire. Certains utilisateurs du site font un copier-coller d'un document word pour remplir cette section du formulaire car ils veulent passer un correcteur avant de publier. Les apostrophes sont entrés dans la base de donnée avec le code ’ plutôt que les apostrophes. J'ai beau faire une fonction pour ajouter une barre oblique pour gérer les apostrophes, je vois bien qu'il faut convertir la chaine de caractères pour remplacer l'apostrophe penché de word par un bon vieux apostrophe droit. J'ai fait plusieurs tentatives avec des trucs trouvés sur internet, mais rien ne fonctionne.

voici un exemple de ce que j'ai essayé...
function convert_quotes($string){
$search = array(chr(145),chr(146),chr(147),chr(148),chr(151));
$replace = array("'","'",'"','"','-');
return str_replace($search, $replace, $string);
}
Quelqu'un a une idée???

Re: apostrophes de word

Posté : 23 nov. 2020, 06:16
par dick-perron
En passant, quand je vais récupérer dans la base de données, l'affichage est correct, (même si la BDD contient le code étrange), mais la variable est aussi envoyée par courriel et le courriel, lui, contient le code étrange au lieu des apostrophes. J'espère être assez clair.

Re: apostrophes de word

Posté : 28 nov. 2020, 00:28
par finipe
Essaye avec ça :

Code : Tout sélectionner

str_replace("‘", "'", $string);

Re: apostrophes de word

Posté : 28 nov. 2020, 05:20
par dick-perron
Voici ce que j'ai tenté. J'ai juste mis la partie du script qui gère l'apostrophe avec un echo qui affiche ce que j'espérais être la variable corrigée. Dans la base de donnée, j'ai mis le mot "j'espère" copié et collé de word. L'affichage n'est pas modifié...
		$liste = "
				SELECT variable_avec_apostrophe 
				FROM DB
				WHERE no = 313
			   ";
		$result = mysql_query ($liste);
		
		while ($ligne = mysql_fetch_array($result, MYSQL_NUM))
		
			    { 
					$string=$ligne[0];
			    }
			str_replace("‘", "'", $string);
			echo "str_replace = ".$str_replace;


Re: apostrophes de word

Posté : 28 nov. 2020, 14:17
par finipe
C'est parce que tu ne réaffectes pas la valeur de $string. Il faut écrire ça :

Code : Tout sélectionner

$string = str_replace("‘", "'", $string);


J'ajoute que si tu veux modifier chaque ligne, tu dois mettre cette commande à l'intérieur de ta boucle while, pas en dehors, sinon il ne modifiera que ta dernière ligne.