Vérifier l'orthographe et la grammaire d'un site avec php

Comment vérifier et corriger les fautes d'orthographe et de grammaire d'un ensemble de pages html ?

14 mai 2015

Introduction

Nous avons développé une librairie php nommée php-spellchecker.

Cette librairie extrait dans un premier temps, le contenu textuel d'une page html, elle interroge ensuite le serveur de LanguageTool pour vérifier l'orthographe et la grammaire du texte, puis effectue une vérification complémentaire avec PHP Enchant.

Nous l'utilisons régulièrement afin de vérifier l'orthographe des articles de ce site.

Pré-requis

PHP ou Hypertext Preprocessor doit être installé, php est un langage de programmation libre principalement utilisé dans le développement internet.

PHP Enchant est un vérificateur orthographique intégré à PHP.

Composer est un gestionnaire libre de dépendances pour php, il permet de déclarer et d'installer automatiquement des librairies tierces.

Java doit être installé, java est un langage de programmation multiplateforme. Il est nécessaire au fonctionnement de LanguageTool.

LanguageTool est un correcteur orthographique et grammatical libre et open-source.

Installation de LanguageTool

Télécharger la version stand-alone de LanguageTool.

Dézipper le fichier dans un répertoire de votre choix, dans notre cas C:\Glicer\LanguageTool.

Installation de composer

Exécuter dans un invité, la ligne de commande ci-dessous :

php -r "readfile('https://getcomposer.org/installer');" | php

Cela affiche :

#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: C:\tmp\composer.phar
Use it: php composer.phar

Un fichier composer.phar est maintenant présent dans le répertoire courant.

Configurer le fichier composer.json

Créer un fichier composer.json dans le répertoire courant contenant :

{
    "require": {
       "glicer/spell-checker": "dev-master"
    }
}

Installation des librairies

À partir du même répertoire que composer.json, exécuter dans un invité, la ligne de commande ci-dessous :

    php composer.phar install

Cela affiche :

Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing symfony/process (v2.3.28)
    Downloading: 100%

  - Installing symfony/finder (v2.3.28)
    Loading from cache

  - Installing symfony/css-selector (v2.6.7)
    Downloading: 100%

  - Installing glicer/simply-html (1.0.0)
    Loading from cache

  - Installing react/promise (v2.2.0)
    Loading from cache

  - Installing guzzlehttp/streams (3.0.0)
    Loading from cache

  - Installing guzzlehttp/ringphp (1.0.7)
    Loading from cache

  - Installing guzzlehttp/guzzle (5.2.0)
    Loading from cache

  - Installing glicer/spell-checker (dev-master 576274a)
    Cloning 576274a0579802bc85324859ececd4a1d2df2bcc

Writing lock file
Generating autoload files

Structure du répertoire

Le répertoire courant contient les fichiers ci-dessous :

composer.json
composer.phar
composer.lock
vendor
 ├───composer
 ├───glicer
 │      ├───spell-checker
 │      └───simply-html
 ├───guzzlehttp
 ├───ringphp
 ├───streams
 ├───react
 └───symfony

Exemple d'utilisation de la librairie php-checkspeller

Créer un fichier sample_check_html.php contenant le code ci-dessous :

<?php
require 'vendor/autoload.php';

use GlSpellChecker\GlSpellChecker;
use Symfony\Component\Finder\Finder;

// indique le répertoire contenant LanguageTool, la langue à corriger et le port de communication du serveur LanguageTool
$spellchecker  = new GlSpellChecker("C:\\Glicer\\LanguageTool\\", "fr", "fr_FR",8081);

// indique la liste des fichiers html à vérifier, dans notre cas tous les fichiers du répertoire public
$finder = new Finder();
$files  = $finder->files()->in('./public')->name("*.html");

//lance la vérification
$filereport = $spellchecker->checkHtmlFiles(
                                    $files,
                                        function (SplFileInfo $file, $nbrsentences) {
                                            // appelée au démarrage de vérification d'un fichier html
                                        },
                                        function ($sentence) {
                                            // appelée à chaque phrase vérifiée
                                        },
                                        function () {
                                            // appelée à la fin de vérification d'un fichier html
                                        }
            );

//affiche la liste des rapports html, un rapport par fichier html vérifié
print_r($filereport);

Exécuter le script en tapant la ligne de commande ci-dessous :

php sample_check_html.php

Cela affiche par exemple :

C:\Users\Glicer\AppData\Local\Temp\spellcheck55548540304ae.html

Ouvrir le fichier html avec un navigateur internet, les fautes sont affichées en rouge. Survoler une erreur avec la souris pour afficher sa description et une proposition de correction.

Versions des logiciels et langages utilisés