Jump to content

css-sanitizer/cs

From mediawiki.org
This page is a translated version of the page Css-sanitizer and the translation is 100% complete.

Knihovna CSS Sanitizer implementuje v PHP tokenizér, parser a gramatický matcher CSS, který se většinou řídí gramatikou CSS Syntax Module Level 3 ze dne 20. února 2014, CSS Values ​​and Units Module Level 3 a CSS Selectors Level 3. Také poskytuje sanitizér (StylePropertySanitizer), který rozpoznává různé CSS3 moduly.

Tato knihovna byla vyvinuta pro použití v Extension:TemplateStyles pro MediaWiki.

Použití

.php
use Wikimedia\CSS\Parser\Parser;
use Wikimedia\CSS\Sanitizer\StylesheetSanitizer;

/** Analýza stylového listu z řetězce **/

$parser = Parser::newFromString( $cssText );
$stylesheet = $parser->parseStylesheet();

/** Nahlásit jakékoli chyby parseru **/

foreach ( $parser->getParseErrors() as list( $code, $line, $pos ) ) {
	// $code je řetězec, který by měl být vhodný jako klíč pro knihovnu i18n.
	// Podrobnosti viz errors.md.
	$error = lookupI18nMessage( "css-parse-error-$code" );
	echo "Parse error: $error at line $line character $pos\n";
}

/** Použití sanitizace na stylový list **/

// Pokud potřebujete upravit výchozí hodnoty, zkopírujte kód této metody a upravte jej.
$sanitizer = StylesheetSanitizer::newDefault();
$newStylesheet = $sanitizer->sanitize( $stylesheet );

/** Nahlaste jakékoli chyby vylepšení **/

foreach ( $sanitizer->getSanitizationErrors() as list( $code, $line, $pos ) ) {
	// $code je řetězec, který by měl být vhodný jako klíč pro knihovnu i18n.
	// Podrobnosti viz errors.md.
	$error = lookupI18nMessage( "css-sanitization-error-$code" );
	echo "Sanitization error: $error at line $line character $pos\n";
}

/** Převést upravený stylový list zpět na text **/

$newText = (string)$newStylesheet;

// Nebo pokud byste to raději měli také minimalizované
$minifiedText = Wikimedia\CSS\Util::stringify( $newStylesheet, [ 'minify' => true ] );

Historie

Potřebovali jsme CSS čistič s několika vlastnostmi:

  • Přísná analýza dle moderních standardů.
  • Zahrnuje pozici řádku a znaku pro všechny chyby.
  • Konfigurovatelné pro omezení nebezpečných konstrukcí, jako jsou externí odkazy na URL.
  • Chyby lze snadno lokalizovat.

Nenašli jsme knihovnu, která by splňovala tyto požadavky, a tak jsme ji vytvořili.

Externí odkazy