Je travaille sur un script permettant de lire en ligne des parties d'échecs provenant de fichiers PGN.

La première étape consiste à transformer ces fichiers en format SQL. Curieusement, rien n'existe sur le web à cet égard. J'ai donc dû construire mon propre algorithme. Ainsi, en quelques secondes, un fichier pouvant contenir 3000 parties format PGN se retrouve dans MySql où les en-têtes sont reconnues comme des champs. (Si vous êtes intéressé, écrivez-moi !)

J'utilise toujours le merveilleux script de Chess Tempo pour afficher une partie sur l'échiquier. Mais ce script exige, entre autres, que les coups soient sur une même ligne, donc sans aucun retour chariot. Par exemple :

1. e4 c5 2. f4 d5 3. e5 Bf5 4. g4 Be4 5. f5 Bxh1 6. Bb5+ Nc6 7. g5 e6 8. Qg4 h5
9. Qf4 exf5 10. Qxf5 Nge7 11. Qf2 Qc7 12. d4 cxd4 13. Qxd4 O-O-O 14. Qa4 Qxe5+
15. Ne2 g6 16. Bf4 Qxb2 17. Bxc6 Nxc6 18. Nec3 Bg7 19. Kd2 Bxc3+ 20. Nxc3 Qxa1
21. Nb5 Rhe8 22. Be3 Rxe3 0-1

doit devenir :

1. e4 c5 2. f4 d5 3. e5 Bf5 4. g4 Be4 5. f5 Bxh1 6. Bb5+ Nc6 7. g5 e6 8. Qg4 h5 9. Qf4 exf5 10. Qxf5 Nge7 11. Qf2 Qc7 12. d4 cxd4 13. Qxd4 O-O-O 14. Qa4 Qxe5+ 15. Ne2 g6 16. Bf4 Qxb2 17. Bxc6 Nxc6 18. Nec3 Bg7 19. Kd2 Bxc3+ 20. Nxc3 Qxa1 21. Nb5 Rhe8 22. Be3 Rxe3 0-1

Il faut donc transformer les fins de ligne en espace. Cela m'a pris un petit bout de temps avant de trouver la formule PHP qui fait cela. En supposant que la variable $laPartie contiennent les coups, voici ce qu'il faut faire :

$laPartie =preg_replace("/[\r\t\n]/"," ",$laPartie);

Notez que cette expression modifie aussi les tabulations (\t).