css-sanitizer/fr
Appearance
La bibliothèque CSS Sanitizer implémente en PHP un analyseur de balises CSS, un analyseur syntaxique et un vérificateur de grammaire qui pour la plupart suivent les recommendations candidates du Module de syntaxe CSS niveau 3 en date du 20 février 2014, le Module des valeurs et unités CSS niveau 3 et la grammaire des Sélecteurs CSS niveau 3.
Il fournit également un nettoyeur (StylePropertySanitizer) qui reconnait divers modules CSS3.
Cette bibliothèque a été développée pour être utilisée dans Extension:TemplateStyles dans MediaWiki.
Utilisation
.php
use Wikimedia\CSS\Parser\Parser;
use Wikimedia\CSS\Sanitizer\StylesheetSanitizer;
/** Analyser syntaxiquement une feuille de style à partir d'une chaîne de caractères **/
$parser = Parser::newFromString( $cssText );
$stylesheet = $parser->parseStylesheet();
/** Rapporter chaque erreur de l'analyseur syntaxique **/
foreach ( $parser->getParseErrors() as list( $code, $line, $pos ) ) {
// $code est une chaîne qui peut servir de clé à une bibliothèque i18n.
// voir errors.md pour les détails
$error = lookupI18nMessage( "css-parse-error-$code" );
echo "Parse error: $error at line $line character $pos\n";
}
/** Appliquer l'analyseur sur la feuille de style **/
// Si vous devez adapter les valeurs par défaut, copiez le code de cette méthode et mettez-le à jour.
$sanitizer = StylesheetSanitizer::newDefault();
$newStylesheet = $sanitizer->sanitize( $stylesheet );
/** Rapporter chaque erreur de sanitizer **/
foreach ( $sanitizer->getSanitizationErrors() as list( $code, $line, $pos ) ) {
// $code est une chaîne qui peut servir de clé à une bibliothèque i18n.
// voir errors.md pour les détails.
$error = lookupI18nMessage( "css-sanitization-error-$code" );
echo "Sanitization error: $error at line $line character $pos\n";
}
/** convertir la feuille de style nettoyée en texte **/
$newText = (string)$newStylesheet;
// ou si vous préférez plutôt le réduire
$minifiedText = Wikimedia\CSS\Util::stringify( $newStylesheet, [ 'minify' => true ] );
Historique
Nous avons demandé un nettoyeur CSS avec plusieurs propriétés :
- Analyse syntaxique stricte selon les standards modernes.
- Inclut la position des lignes et des caractères pour toutes les erreurs.
- Configurable pour limiter les structures non sécurisées telles que les références des URL externes.
- Les erreurs sont facilement localisables.
Nous n'avons pas pu trouver une bibliothèque qui correspondait à ces exigences, alors nous en avons créé une.