Я использую PHP Tidy в качестве включенного скрипта, и, хотя кажется, что он работает в основном (если не идеально), похоже, он не работает для удаления атрибутов name из моих тегов. Я попробовал все, чтобы удалить их, включая удаление их с помощью PHP Simple HTML DOM перед запуском Tidy, но они просто продолжают возвращаться.
Я тщательно исследовал эту проблему, но единственные результаты, которые я придумаю, это от людей, которые рекомендуют использовать якорь как имя, так что оно должно работать, и есть кое-что в том, что я делаю, что не работает .
Моя конфигурация Tidy выглядит следующим образом, возможно, что-то еще переопределяет элемент привязки как имени? Я переместил это в основание, на всякий случай, это помогло бы, но это не казалось. Я также попытался установить его в false, и это тоже не помогло.
$tidy_config = Array(
'break-before-br' => 'no',
'clean' => 'clean',
'doctype' => 'strict',
'drop-empty-paras' => 'yes',
'drop-font-tags' => 'yes',
'force-output' => 'yes',
'indent' => 'yes',
'indent-attributes' => 'no',
'indent-spaces' => 2,
'input-encoding' => 'utf8',
'join-styles' => 'no',
'literal-attributes' => 'yes',
'logical-emphasis' => 'yes',
'lower-literals' => 'yes',
'merge-divs' => 'no',
'merge-spans' => 'yes',
'output-encoding' => 'ascii',
'output-xhtml' => 'yes',
'output-bom' => 'no',
'preserve-entities' => 'yes',
'quiet' => 'yes',
'quote-ampersand' => 'yes',
'quote-marks' => 'no',
'quote-nbsp' => 'yes',
'show-body-only' => 'yes',
'show-errors' => 0,
'show-warnings' => 0,
'sort-attributes' => 'alpha',
'tidy-mark' => 'no',
'vertical-space' => 'yes',
'wrap' => '0',
'wrap-attributes' => 'no',
'anchor-as-name' => 'no'
);
Если подумать, похоже, что только шоу-тело не работает, ... может быть, все это просто игнорируется, и я делаю что-то еще в корне неправильно?
Любые подсказки и помощь будут с благодарностью.
Oezi: Спасибо за совет относительно обновления вопроса. Это первый вопрос, который я задал здесь.
Я использую тэги id. Это то, что обычно происходит (где все соответствующие переменные определены ранее):
<code>require_once $docRoot . '/htmldom/simple_html_dom.php';
require $this_dir . '/includes/create-tidy-object.php';
$string1 = "<a id='anchor1'>First Anchor Text</a>";
$string2 = "<a id='anchor2' name='anchor2'>Second Anchor Text</a>";
$string3 = "<a id='anchor3'>Third Anchor Text</a>";
$tidy->parseString($string1,$tidy_config,'utf8');
$tidy->cleanRepair();
$revised_string_1 = $tidy;
print "<pre>Revised String 1:\n" . htmlentities($revised_string_1) . "\n\n";
$tidy->parseString($string2,$tidy_config,'utf8');
$tidy->cleanRepair();
$revised_string_2 = $tidy;
print "Revised String 2:\n" . htmlentities($revised_string_2) . "\n
\ п ";
$ stringdom3 = str_get_html ($ string3);
foreach ($ stringdom3-> find ('a [id]') как $ anchor) {$ anchor-> name = null; }
$ updated_string_3 = $ stringdom3;
print "
\nRevised String 3, after PHP Simple HTML DOM Parser:\n";
print htmlentities($revised_string_3) . "\n
\ n";
$ Tidy-> parseString ($ revised_string_3, $ tidy_config, 'utf8');
$ Tidy-> cleanRepair ();
$ updated_string_3a = $ tidy;
печать "
Revised String 3, after going through both:\n";
print htmlentities($revised_string_3a) . "\n\n";
</code>
Производит (с разрывами строки, добавленными для разборчивости):
Revised String 1:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title></title>
</head>
<body>
<a id='anchor1' name="anchor1">First Anchor Text</a>
</body>
</html>
Revised String 2:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title></title>
</head>
<body>
<a id='anchor2' name='anchor2'>Second Anchor Text</a>
</body>
</html>
Revised String 3, after PHP Simple HTML DOM Parser:
<a id='anchor3'>Third Anchor Text</a>
Revised String 3, after going through both:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title></title>
</head>
<body>
<a id='anchor3' name="anchor3">Third Anchor Text</a>
</body>
</html>
Таким образом, tidy не только добавляет теги имен, несмотря на то, что для anchor-as-name установлено значение no, но также создает теги вне тела, несмотря на то, что для show-body-only установлено значение yes.
Хотя очевидно, что очевидное решение состоит в том, чтобы просто не использовать tidy, поскольку я получаю то, что хочу для приведенных выше строк, от простого html dom, я анализирую файлы, содержащие более миллиона символов (документы на 500-1000 страниц), написанные в пафосной версии HTML Word - ежедневно - так что это действительно полезно для его многих других функций.