【问题标题】:Php tidy and text areasPHP 整洁和文本区域
【发布时间】:2011-11-30 09:36:29
【问题描述】:

我正在使用tidy 清理和格式化由twig template engine 生成的HTML 输出。

为了整洁,我使用如下配置:

$config = array('indent' => TRUE, 'output-html' => TRUE, 'wrap' => 0);

一切都很好,除了当我们到达 textareas 时。

这是未清理的片段:

<textarea id="words"
         rows="10"       cols="50"                  >sdfds</textarea>

虽然格式很乱,但在文本区域中输出了正确的值:'sdfds',前后没有任何空格。

这是使用 tidy 后清理后的格式:

                <textarea id="words" name="words" rows="10" cols="50" title="prompt">
sdfds
</textarea>

可以看出,标记现在整洁了很多,但是 tidy 在 'sdfds' 之后引入了换行符,这意味着在浏览器中查看时,光标现在指向 'sdfds' 之后的行。

这很烦人,我不知道该如何处理。我仍然希望清理 textarea 标记,但我希望它的格式如下:

<textarea id="words" name="words" rows="10" cols="50" title="prompt">sdfds</textarea>

以前有人处理过这个问题吗?如果是这样,我怎样才能整洁不为 textarea 标签引入这些空格?

【问题讨论】:

    标签: php textarea tidy


    【解决方案1】:

    如果使用 php 输出 sdfds,则需要添加另一个配置选项。

     $config = array('indent' => TRUE, 'output-html' => TRUE, 'wrap' => 0, 'wrap-php' => 0);
    

    Wrap 只关心 html 并且任何 php 语句都被视为一个新行。有关配置选项的更多信息,您可以访问:http://tidy.sourceforge.net/docs/quickref.html

    【讨论】:

    • 很遗憾 sdfds 不是由 php 生成的。 HTML 由 twig 生成为字符串。
    • Twig 添加 php 代码来回显来自文件或数据库的数据。添加 wrap-php,如果不起作用,请将 0 替换为 false。
    • 我已经尝试将 0 和 False 用于 wrap-php 参数,但我仍然得到相同的结果。这可能是由于使用block()从另一个树枝模板文件中提取的文本区域。
    【解决方案2】:

    当你使用 indent => true 你会弄乱 texareas 和 tidy。它变得整洁,因为即使是 textareas 值也是缩进的。如果您希望您的文本区域显示正确,您可以设置 indent => false。这将整理您的 HTML,但在应用 tidy 后也会使您的 textarea 具有相同的值。我已经看到有一些补丁可以解决这个问题,但是你应该自己编译。你也可以用 PHP 来做这件事,但是你正在整理整齐。

    【讨论】:

    • 我仍然看到与indent =&gt; false 相同的问题。我也尝试将output-html 设置为truefalse,但我仍然看到同样的问题。
    • @phpdev 这适用于 html 输出,其中 tidy 将在 textarea 的确切值之前添加一个换行符。这可以通过使用 output-xml => true 而不是 output-html => true 来解决。
    • 谢谢丹尼斯。这似乎已经解决了问题,但它又引入了另一个问题!由于 output-xml 添加了一个结束标记,&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt; 现在是 &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;,这现在无法验证为 HTML 4.01 Strict:using XHTML-style self-closing tags (such as &lt;meta ... /&gt;) in HTML 4.01 or earlier. To fix, remove the extra slash ('/') character. For more information about the reasons for this, see Empty elements in SGML, HTML, XML, and XHTML.
    【解决方案3】:

    Tidy 有时可能会变得“凌乱”,需要使用 rexep 进一步完善,这是一种解决方法,可以将光标放在最终输出中的同一行,因此可用性不会受到影响。只需运行整理好的 html 槽:

    $subject = preg_replace('%(\r\n|\n)(?=</textarea>)%sim', '', $subject);
    

    【讨论】:

      【解决方案4】:

      只需对文本区域使用修剪功能。你会得到你正在寻找的东西

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        • 2011-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多