apostrophes de word

Eléphant du PHP | 139 Messages

23 nov. 2020, 06:01

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

Eléphant du PHP | 139 Messages

23 nov. 2020, 06:16

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.

Eléphant du PHP | 337 Messages

28 nov. 2020, 00:28

Essaye avec ça :

Code : Tout sélectionner

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

Eléphant du PHP | 139 Messages

28 nov. 2020, 05:20

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;


Eléphant du PHP | 337 Messages

28 nov. 2020, 14:17

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.