PHP Conference Nagoya 2025

tidy::parseString

tidy_parse_string

(PHP 5, PHP 7, PHP 8, PECL tidy >= 0.5.2)

tidy::parseString -- tidy_parse_stringРазбор документа, хранимого в строке

Описание

Объектно-ориентированный стиль

public tidy::parseString(string $string, array|string|null $config = null, ?string $encoding = null): bool

Процедурный стиль

tidy_parse_string(string $string, array|string|null $config = null, ?string $encoding = null): tidy|false

Разбор документа, хранимого в строке.

Список параметров

string

Данные для разбора.

config

Настройки config могут быть заданы в виде массива или строки. Если задана строка, то она интерпретируется как имя файла конфигурации, в противном случае, параметр интерпретируется как сами настройки.

Информацию о каждом параметре можно найти тут: » http://api.html-tidy.org/#quick-reference.

encoding

Параметр encoding устанавливает кодировку для входных/выходных документов. Возможные значения: ascii, latin0, latin1, raw, utf8, iso2022, mac, win1252, ibm858, utf16, utf16le, utf16be, big5, и shiftjis.

Возвращаемые значения

tidy::parseString() возвращает true в случае успешного выполнения. tidy_parse_string() возвращает новый экземпляр tidy в случае успешного выполнения. И метод, и функция возвращают false в случае возникновения ошибки.

Список изменений

Версия Описание
8.0.0 config и encoding теперь допускают значение null.

Примеры

Пример #1 Пример использования tidy::parseString()

<?php
ob_start
();
?>

<html>
<head>
<title>тест</title>
</head>
<body>
<p>ошибка<br>другая линия</i>
</body>
</html>

<?php

$buffer
= ob_get_clean();
$config = array('indent' => TRUE,
'output-xhtml' => TRUE,
'wrap' => 200);

$tidy = tidy_parse_string($buffer, $config, 'UTF8');

$tidy->cleanRepair();
echo
$tidy;
?>

Результат выполнения приведённого примера:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>
      тест
    </title>
  </head>
  <body>
    <p>
      ошибка<br />
      другая линия
    </p>
  </body>
</html>

Смотрите также

  • tidy::parseFile() - Разбирает разметку в файле или URI-идентификаторе
  • tidy::repairFile() - Восстанавливает разметку файла и возвращает его в виде строки
  • tidy::repairString() - Восстанавливает строку, используя по возможности конфигурационный файл
Добавить

Примечания пользователей 3 notes

up
1
steven at nevvix dot com
6 years ago
<?php
/**
* Simpler version without pretty print config options.
*/
function tidy_html5($html, array $config = [], $encoding = 'utf8') {
$config += [
'doctype' => '<!DOCTYPE html>',
'drop-empty-elements' => 0,
'new-blocklevel-tags' => 'article aside audio bdi canvas details dialog figcaption figure footer header hgroup main menu menuitem nav section source summary template track video',
'new-empty-tags' => 'command embed keygen source track wbr',
'new-inline-tags' => 'audio command datalist embed keygen mark menuitem meter output progress source time video wbr',
'tidy-mark' => 0,
];
$html = tidy_parse_string($html, $config, $encoding); // doctype not inserted
tidy_clean_repair($html); // doctype inserted
return $html;
}

$html = '</z><p><a href="#">Link</a></p><p><img src="logo.png"/>Seçond para</p><i class="fa"></i><p></p>';

echo
tidy_html5($html);

<!
DOCTYPE html>
<
html>
<
head>
<
title></title>
</
head>
<
body>
<
p><a href="#">Link</a></p>
<
p><img src="logo.png">Seçond para</p>
<
i class="fa"></i>
<
p></p>
</
body>
</
html>

echo
tidy_html5($html, ['indent'=>2, 'indent-spaces'=>4]);

<!
DOCTYPE html>
<
html>
<
head>
<
title></title>
</
head>
<
body>
<
p><a href="#">Link</a></p>
<
p><img src="logo.png">Seçond para</p><i class="fa"></i>
<
p></p>
</
body>
</
html>

echo
tidy_html5($html, ['indent'=>1], 'ascii');

<!
DOCTYPE html>
<
html>
<
head>
<
title></title>
</
head>
<
body>
<
p>
<
a href="#">Link</a>
</
p>
<
p>
<
img src="logo.png">Se&Atilde;&sect;ond para
</p><i class="fa"></i>
<
p></p>
</
body>
</
html>

echo
tidy_html5($html, ['show-body-only'=>1]);

<
p><a href="#">Link</a></p>
<
p><img src="logo.png">Seçond para</p>
<
i class="fa"></i>
<
p></p>
up
0
gbirch at tech-tamer dot com
6 months ago
The configuration reference for Tidy has moved to https://api.html-tidy.org/
up
0
steven at nevvix dot com
6 years ago
<?php
/**
* UTF-8 HTML5-compatible Tidy
*
* @param string $html
* @param array $config
* @param string $encoding
* @link http://tidy.sourceforge.net/docs/quickref.html
*/
function tidy_html5($html, array $config = [], $encoding = 'utf8') {
$config += [
'clean' => TRUE,
'doctype' => 'omit',
'indent' => 2, // auto
'output-html' => TRUE,
'tidy-mark' => FALSE,
'wrap' => 0,
// HTML5 tags
'new-blocklevel-tags' => 'article aside audio bdi canvas details dialog figcaption figure footer header hgroup main menu menuitem nav section source summary template track video',
'new-empty-tags' => 'command embed keygen source track wbr',
'new-inline-tags' => 'audio command datalist embed keygen mark menuitem meter output progress source time video wbr',
];
$html = tidy_parse_string($html, $config, $encoding);
tidy_clean_repair($html);
return
'<!DOCTYPE html>' . PHP_EOL . $html;
}

$html = '</z><p><a href="#">Link</a></p><p>Second para</p>';
echo
tidy_html5($html);

Output:
<!
DOCTYPE html>
<
html>
<
head>
<
title></title>
</
head>
<
body>
<
p><a href="#">Link</a></p>
<
p>Second para</p>
</
body>
</
html>
To Top