PHP code example of esperecyan / html-filter
1. Go to this page and download the library: Download esperecyan/html-filter library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
esperecyan / html-filter example snippets
esperecyan\webidl\TypeError;
use esperecyan\url\URL;
$filter = new \esperecyan\html_filter\Filter([
'*' => [
'dir' => ['ltr', 'rtl', 'auto'],
'lang' => '/^[a-z]+(-[0-9a-z]+)*$/iu',
'title',
'translate' => ['', 'yes', 'no'],
],
'a' => ['href' => 'isURLWithNetworkScheme'],
'br',
'img' => ['alt', 'src' => 'isURLWithNetworkScheme'],
'p',
'time' => 'datetime',
]);
$filter->setLogger(new class extends \Psr\Log\AbstractLogger {
public function log($level, $message, array $context = []) {
echo "$level: $message\n";
}
});
var_dump($filter->filter(<<<'EOD'
<script>
window.alert('foobar');
</script>
<a href="https://example.com/">例示用ドメイン</a>
<a href="./file.html" title="テスト">相対URL</a>
<bR data-clear="">
<p dir="ltr" lang='"invalid"'>アリス</p>
<p dir="LtR" LanG='ja'>ボブ</p>
EOD
));
function isURLWithNetworkScheme(string $value): bool {
try {
$url = new URL($value);
} catch (TypeError $exception) {
return false;
}
return in_array($url->protocol, ['ftp:', 'http:', 'https:']);
}
$filter = new \esperecyan\html_filter\Filter(['a', 'blockquote', 'code', 'h1', 'h2', 'pre']);
$filter->setLogger(new class extends \Psr\Log\AbstractLogger {
public function log($level, $message, array $context = []) use ($logged) {
$logged = true;
}
});
$output = $filter->filter($input);
$storage = $logged ? $output : $input;
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XHTML文書</title>
</head>
<body>
<?= (new \esperecyan\html_filter\Filter())->filter($storage)