Проверьте HTML5 документ в PHP, используя Tidy

Я пытаюсь очистить строку HTML и создать документ HTML5, используя Tidy и PHP, однако создаю документ HTML3.2. Как видно, я получаю Config: missing or malformed argument for option: doctype ошибка. Я работаю в PHP версии 5.5.35 с Centos 6 и Apache 2.2, и php_info() показывает следующее:

tidy

Tidy support    enabled
libTidy Release 14 June 2007
Extension Version   2.0 ($Id: e066a98a414c7f79f89f697c19c4336c61bc617b $)

Directive   Local Value Master Value
tidy.clean_output   no value    no value
tidy.default_config no value    no value

Как мне создать документ HTML5? Ниже моя попытка:

<?php
$html = <<<EOD
<p>Hello</p>
<div>
<p data-customattribute="will be an error">bla</p>
<p>bla</p>
</div>
<div>
<p>Hi there!</p>
<div>
<p>Opps, a mistake</px>
</div>
</div>
EOD;
$html="<!DOCTYPE HTML><html><head><title></title></head><body>$html</body></html>";

echo($html."\n\n");

$config = array(
'indent' => true,
'indent-spaces' => 4,
'doctype' => '<!DOCTYPE HTML>',
);

$tidy = new tidy;
$tidy->parseString($html, $config, 'utf8');
$tidy->cleanRepair();
print_r($tidy);

ВЫХОД

<!DOCTYPE HTML><html><head><title></title></head><body><p>Hello</p>
<div>
<p data-customattribute="will be an error">bla</p>
<p>bla</p>
</div>
<div>
<p>Hi there!</p>
<div>
<p>Opps, a mistake</px>
</div>
</div></body></html>

tidy Object
(
[errorBuffer] => Config: missing or malformed argument for option: doctype
line 9 column 21 - Warning: discarding unexpected </px>
line 3 column 2 - Warning: <p> proprietary attribute "data-customattribute"[value] => <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title></title>
</head>
<body>
<p>
Hello
</p>
<div>
<p data-customattribute="will be an error">
bla
</p>
<p>
bla
</p>
</div>
<div>
<p>
Hi there!
</p>
<div>
<p>
Opps, a mistake
</p>
</div>
</div>
</body>
</html>
)

4

Решение

Старые версии Tidy не поддерживают документы HTML5

Первый выпуск tidy Поддержка HTML 5 была в Сентябрь 2015, где HTML Tidy Advocacy Community Group выпустила первую версию tidy-html5.

Обратите внимание, что вы используете старую версию tidy, поэтому вы не сможете проверить документы html5.

Текущие предварительно скомпилированные версии php еще не скомпилированы с tidy-html5, поэтому, если вы захотите использовать tidy-html5, вам придется скомпилировать его самостоятельно.

Эти инструкции были взяты из ПРОЧТИ МЕНЯ файл в gidub tidy-html5:

Из-за изменений API в исходном коде PHP необходимо заменить «buffio.h» на «tidybuffio.h» в файле ext / tidy / tidy.c.

То есть — перед настройкой php запустите это в исходном каталоге php:

   sed -i 's/buffio.h/tidybuffio.h/' ext/tidy/*.c

А затем продолжите с (просто пример здесь, используйте ваши собственные параметры конфигурации php):

   ./configure --with-tidy=/usr/local
make
make test
make install
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]