2011-10-04 39 views
8

我使用tidy来清理和格式化由twig template engine生成的HTML输出。Php整理和文本区域

我使用下面的配置整齐:

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

一切正常,好和好,除非我们得到文字区域。

这里的不清洁片段:

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

虽然格式非常凌乱,正确的值在文本区输出:“sdfds”没有任何空格之前或之后。

这是使用整齐后的清洗格式:

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

如可以看到的,该标记是现在更整洁,但整齐已经推出后“sdfds”断行,这意味着光标现在指向浏览器中查看'sdfds'后的行。

这很烦人,我不知道如何去处理这个问题。我仍然希望有textarea标签清理干净,但我宁愿它被格式化,像这样:

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

有没有人处理这个问题之前?如果是这样,我怎样才能整理不引入这些textarea标签的空格?

回答

0

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

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

只包括对html的担心和任何php语句都视为新行。有关配置选项的更多信息,您可以访问:http://tidy.sourceforge.net/docs/quickref.html

+0

不幸的是sdfds不是由php生成的。 HTML由twig生成为一个字符串。 – F21

+0

Twig添加了php代码以回显文件或数据库中的数据。添加wrap-php,如果不起作用,用false替换0。 –

+0

我试过用'wrap-php'参数使用0和False,但我仍然得到相同的结果。它可能是由于使用'block()'从另一个树枝模板文件中拉出了文本区域。 – F21

0

当您使用indent => true时,您会弄脏整齐的texareas。它会变得整洁,因为即使textareas值也是缩进的。如果你想让textareas看起来正确,你可以设置indent => false。这将清理你的HTML,但也将离开你的textarea使用整洁后相同的值。我看到有一些补丁可以解决问题,但是你应该自己整理一下。你也可以用PHP来做到这一点,但是你正在整理整理。

+0

我仍然看到'indent => false'的相同问题。我也尝试将'output-html'设置为'true'或'false',但我仍然看到同样的问题。 – F21

+1

@phpdev这对html输出来说是正确的,tidy会在textarea的精确值之前添加一个换行符。这可以通过使用output-xml => true来代替output-html => true来解决。 – dennis

+0

谢谢丹尼斯。这似乎解决了这个问题,但它引入了另一个!由于output-xml添加了一个结束标记,因此现在是',现在无法验证为HTML 4.01 Strict:'在HTML 4.01或更早版本中使用XHTML样式的自闭标记(如)。要修复,请删除多余的斜杠('/')字符。有关此原因的更多信息,请参阅SGML,HTML,XML和XHTML中的空元素 – F21

0

Tidy有时可能会“混乱”,需要rexep进一步细化,这里是一个解决方法,它将光标放在最终输出的同一行上,所以可用性不会受到影响。只需运行你整理好的HTML低谷:

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

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