0

我正在使用 Javascript 来生成 HTML 编码的文本区域,这可以正常工作,然后我将其存储到 SQL 数据库中。还行吧。但是当我想将它输出回textarea以再次编辑时,php-tidy将关闭的textarea标签移动到内容之前,因此实际上将内容放在textarea标签之后。这仅在内容使用 HTML 标签格式化时发生,但这些是生成格式所必需的,我需要生成 HTML 格式的电子邮件等。当我禁用 PHP-tidy 时,一切正常,只是 HTML 代码完全一团糟

如果有人无论如何都要让 PHP-tidy 忽略某些代码部分或免除 textarea 被 PHP-tidy 解析,那就太好了。

我的代码很简单

//数据库内容

$message = stripslashes($database['message']);
$buffer = "<textarea id=\"elm1\" name=\"message\" cols=\"70\" rows=\"20\">$message</textarea>";

$config = array('indent' => TRUE,
           'doctype' => "strict",
            'output-xhtml' => TRUE,
            'wrap' => 300);
$tidy = tidy_parse_string($buffer, $config);
$tidy->cleanRepair();
echo $tidy;

如果邮件没有 HTML 内容,则格式正常

php tidy disabled 它出来了,是的,格式不太好,但可以按我的预期工作

<textarea id="elm1" name="Message" cols="70" rows="20"><p>this is a full html email.</p>
<p>little formatting </p>
<p><span style="color: #ff0000;">different colour text</span></p>
<p>and normal</p></textarea>

php tidy 已启用

<textarea id="elm1" name="Message" cols="70" rows="20">
</textarea>
    <p>
      this is a full html email.
    </p>
    <p>
      little formatting
    </p>
    <p>

      <span style="color: #ff0000;">different colour text</span>
    </p>
    <p>
      and normal
    </p>

我希望启用 PHP-tidy 但仍然有我期望的结果

谢谢

贵宾32

4

1 回答 1

0
$message = stripslashes($database['message']);
// DO the tidy before interpolating with
// the html of your form element
$config = array('indent' => TRUE,
           'doctype' => "strict",
            'output-xhtml' => TRUE,
            'wrap' => 300);

$tidy = tidy_parse_string($message, $config);
$tidy->cleanRepair();

// now insert it into the correct place

$buffer = "<textarea id=\"elm1\" name=\"message\" cols=\"70\" rows=\"20\">$tidy</textarea>";

echo $buffer;

我认为你只是按照错误的顺序组装东西。

未经测试

于 2012-07-29T15:55:13.337 回答