0

私は Javascript を使用して HTML エンコードされたテキストエリアを生成しています。これは問題なく動作し、SQL データベースに保存します。これで結構です。しかし、これをテキストエリアに出力して再度編集する場合、php-tidyはテキストエリアの終了タグをコンテンツの前に移動するため、実際にはテキストエリアタグの後にコンテンツを配置します。これは、コンテンツが HTML タグでフォーマットされている場合にのみ発生しますが、これらは、HTML フォーマットの電子メールなどを生成するために必要なフォーマットを生成するために必要です。

PHP-tidy でコードの一部を無視したり、テキストエリアを 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 コンテンツがない場合、フォーマットは問題ありません

はい、フォーマットはあまり良くありませんが、期待どおりに機能します

<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整頓が有効

<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 を有効にしたいのですが、期待どおりの結果が得られます

ありがとう

Vip32

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 に答える