0

我目前正在尝试在严格的 XHTML 文档中的 textarea 中发布一些代码片段。我一辈子都无法让这些片段通过验证。我有一个完美的 xhtml 严格文档,其中包含以下内容。

<textarea rows="10" cols="80">
    <form method="post" action="<?=$_SERVER['PHP_SELF']?>">
</textarea>

我尝试过(我假设)是<![CDATA[标签的所有可能组合都无济于事。

包括以下内容:

<textarea rows="10" cols="80">
    <![CDATA[
        <form method="post" action="<?=$_SERVER['PHP_SELF']?>">
    ]]>
</textarea>

这会奏效;但是,cdata 标记显示在文本区域中!

有任何想法吗?

4

1 回答 1

1

如果您希望表单标签成为文本区域的内容,只需将 < 编码为 < " 作为 " & 作为 & 和 > 作为 >:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="de">
<head>
    <title>Test</title>
</head>
<body>
<p>
<textarea rows="10" cols="80">
    &lt;form method=&quot;post&quot; action=&quot;<?=$_SERVER['PHP_SELF']?>&quot;&gt;
</textarea>
</p>
</body>
</html>

PHP 可以为您进行编码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="de">
<head>
    <title>Test</title>
</head>
<body>
<p>
<textarea rows="10" cols="80">
    <?php
    $html = <<<HTML
<form method="post" action="{$_SERVER['PHP_SELF']}">
HTML;
    echo htmlspecialchars($html);
    ?>
</textarea>
</p>
</body>
</html>
于 2011-10-15T21:34:19.967 回答