php - 防止tidy添加html标签

标签 php html forms tidy

我有一个生成一些 html(表单元素和表格元素)的类,但是这个类在一行中返回所有 html。

所以我尝试使用 tidy 来美化代码(缩进代码、放置换行符等),我遇到的唯一问题是它还会生成我不想要的标签。

代码如下:

tidy_parse_string(
                    $table->getHtml(),
                    array(
                            'DocType' => 'omit',
                            'indent' => true,
                            'indent-spaces' => 4,                                    
                            'wrap' => 0                                    
                        )
                );

我发现删除多余 html 标签的唯一方法是添加一个 str_replace,如下所示:

str_replace(array('<html>','</html>','<body>','</body>','<head>','</head>','<title>','</title>'),'', code);

这行得通,但我真的很希望有一种方法可以告诉 tidy 只美化代码而不插入额外的代码。

最佳答案

试试 show-body-only选项。

例如

$s = '<form method="post" action="?"><table><tr><td><input tpye="submit"></table>';
echo tidy_parse_string($s, array('show-body-only'=>true, 'indent'=>true));

打印

<form method="post" action="?">
  <table>
    <tr>
      <td>
        <input tpye="submit">
      </td>
    </tr>
  </table>
</form>

(字符串已被修复和缩进,但未添加 html/body 包装器)。 可以结合 output-xhtml选项,在这种情况下还会为空输入元素添加斜杠。

关于php - 防止tidy添加html标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963298/

相关文章:

javascript - 如何在表单数据上附加多个文件输入

php - 配置 ZF2 view_manager 以加载 2 个单独的模板映射

css - 使选择选项的字体大小与其容器相同,而不指定 px/pt 单位

php - 获取表中最高 4 个值的计数并保存为变量

html - 选择的不同 css 行为 - 选项

html - iframe 作为 div 背景,内部有可见内容且可点击

html - 如何在 innerHtml 中将自定义 html 标签显示为纯文本

php - 获取输入路径以提交到 php 中的保管箱

php - 在 Laravel 中通过确认页面和提交页面保留输入的正确方法是什么?

php - 什么方法适合加密 SQLite 数据库,以便在 PHP 服务器上使用?