Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problème avec les apostrophes #11

Closed
lesurfeur opened this issue Dec 10, 2013 · 10 comments
Closed

Problème avec les apostrophes #11

lesurfeur opened this issue Dec 10, 2013 · 10 comments

Comments

@lesurfeur
Copy link

Bonsoir Étienne,
Je reviens vers toi, après me remettre sur mon projet de vidéothèque personnelle utilisant ton API.
Quand on récupère le synopsis d'un film, certains apostrophes sont mal affichés (je pense que c'est dû au copier coller d'allociné avec word). Certains apostrophes apparaissent comme ceci " ? ".
Je pensai que c'était dû à mon encodage mais non, car même en brut, cela ne change rien car l'info est récupéré tel quel.

Pourrais tu m'aiguiller ?
Merci d'avance.

@etn406
Copy link
Owner

etn406 commented Dec 10, 2013

Bonsoir,
Peux-tu me donner quelques titres de films qui posent problème ? Comme ça je vais y jeter un coup d’œil.

@lesurfeur
Copy link
Author

Oui bien sûr.

Monstres Academy
Aya de Yopougon
Intouchables
...

@lesurfeur
Copy link
Author

As tu eu le temps de jeter un œil !

@etn406
Copy link
Owner

etn406 commented Dec 17, 2013

Oui j'ai constaté le problème, mais si le problème vient d'Allociné je ne peux pas faire grand chose, à part essayer de détecter ce problème pour le corriger. J'ai rajouté la détection automatique des points d'interrogation mal placés pour les remplacer par une apostrophe. Ça fonctionne, mais je trouve ça un peu bancal comme solution.

@etn406 etn406 closed this as completed Dec 17, 2013
@lesurfeur
Copy link
Author

Le problème est toujours la !!!

exemple :
Title : Monstres Academy
Synopsis :
Même quand il n?était qu?un tout petit monstre, Bob Razowski rêvait déjà de devenir une Terreur. Aujourd?hui, il est enfin en première année à la prestigieuse université Monstres Academy, où sont formées les meilleures Terreurs. Son plan de carrière bien préparé est pourtant menacé par sa rencontre avec James P. Sullivan, dit Sulli, un vrai crack qui a un don naturel pour Terrifier. Aveuglés par leur désir de se prouver l?un à l?autre qu?ils sont imbattables, tous deux finissent par se faire renvoyer de l?université. Pire encore : ils se rendent compte que s?ils veulent que les choses aient une chance de rentrer dans l?ordre, ils vont devoir travailler ensemble, et avec un petit groupe de monstres bizarres et mal assortis?

@lesurfeur
Copy link
Author

Après avoir regarder le code, j'ai modifié ce bout :


                    // Correction des apostrophes dans le synopsis si nécessaire
                    if (ALLO_AUTO_CORRECT_APOSTROPHES and !empty($data['synopsis']))
                      $data['synopsis'] = preg_replace("#\?(\S)#", "'$1", $data['synopsis']);
                    
                    if (ALLO_AUTO_CORRECT_APOSTROPHES and !empty($data['synopsisShort']))
                      $data['synopsisShort'] = preg_replace("#\?(\S)#", "'$1", $data['synopsisShort']);

Par :


                    // Correction des apostrophes dans le synopsis si nécessaire
                    if (ALLO_AUTO_CORRECT_APOSTROPHES and !empty($data['synopsis']))
                      $data['synopsis'] = preg_replace('#\p{L}\K[‘’](?=\p{L})#u', "'", $data['synopsis']);
                    
                    if (ALLO_AUTO_CORRECT_APOSTROPHES and !empty($data['synopsisShort']))
                      $data['synopsisShort'] = preg_replace('#\p{L}\K[‘’](?=\p{L})#u', "'", $data['synopsisShort']);

Et tout baigne maintenant ;)

Remplacement des caractères et par ' ,seulement s'il y a des caractères alphabétiques avant et après un des caractères et permet de gérer les accents.

Ce qui sous entend que le problème vient de l'encodage dans la class qui nous met un ? à la place de . Et du coup avec le preg_replace il ne remplace rien du tout vu que ce n'est pas un ?.
En attendant cela fonctionne bien, en continuant de chercher d'ou vient le problème réellement. (a chercher du coté de l'utf-8 je pense)

@etn406 etn406 reopened this Dec 17, 2013
@etn406
Copy link
Owner

etn406 commented Dec 17, 2013

(mince, issue réouverte pour rien)

Ok merci !
C'était donc mon expression régulière qui n'était pas bonne :/
Dis-moi celle-ci #\p{L}\K[‘’](?=\p{L})#u c'est toi qui l'a faite ou tu l'as trouvée sur le net ?

Je crois me souvenir avoir eu ce problème il y a longtemps (dans une autre version), et qu'il vient des fonctions utf-8 de PHP qui ne sont pas à jour (et n'arrive peut-être pas à bien gérer les accents).

Si cette solution fonctionne pour l'instant, tant mieux.

@etn406 etn406 closed this as completed Dec 17, 2013
@lesurfeur
Copy link
Author

Bonjour Étienne,
Bon après mettre penché sur la class, j'ai trouvé le problème.
C'est bien l'utilisation de l'utf-8 qui pose problème, du moins le décodage que tu fais.
Dans cette partie de code :


    /**
    * Décoder de l'UTF8 les données réceptionnées
    * Automatically decode the received data from UTF8
    * 
    * @var bool
    */
    
    define('ALLO_UTF8_DECODE', true);

Passe le à false et tu verras que cela fonctionne à merveille ;) (avec l'ancien fichier api-allocine-helper.php)
La déclaration de l'utf-8 doit se faire lors de l'affichage dans tes pages d'exemple, tu déclares le charset utf-8 et ça roule.
Donc les changements avec les preg_replace n'ont plus lieu d'être.
Du coup, je pense qu'il faudrait revoir l'ensemble des variables qui font appel à la fonction ALLO_UTF8_DECODE, à part peu être la recherche et encore, à voir.

Tu en penses quoi ?

@etn406
Copy link
Owner

etn406 commented Dec 20, 2013

Je pense que je vais faire ça, si c'est là d'où vient le problème.
Je vais essayer quelques tests, mais vu que tu en as déjà fait ça doit être bon !

@lesurfeur
Copy link
Author

En faite, tu décodes la chaine qui est déjà en utf-8.
J'ai effectué une série de test, et ils sont concluants pour ma part. Car avant non seulement les apostrophes étaient mal retranscrit et il y avait d'autre problème avec les caractères spéciaux. La j'en ai plus, faut juste bien déclarer les pages en utf-8 et dans mon cas la bdd également.

P.S: au passage, il y a aussi un problème avec la recherche par titre comportant des accents, apostrophes ect...
ex: l'avare, les évadés...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants