tidy::parseString

tidy_parse_string

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

tidy::parseString -- tidy_parse_string β€” Π Π°Π·Π±ΠΎΡ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠ³ΠΎ Π² строкС

ОписаниС

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ

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

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ

function 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
0
gbirch at tech-tamer dot com ΒΆ
2 years ago
The configuration reference for Tidy has moved to https://api.html-tidy.org/
up
0
steven at nevvix dot com ΒΆ
7 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
steven at nevvix dot com ΒΆ
7 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>