Проверка примеров фрагментов кода в текстовой области с использованием строгого XHTML - PullRequest
0 голосов
/ 15 октября 2011

В настоящее время я пытаюсь опубликовать некоторые фрагменты кода внутри текстовой области в строгом документе XHTML. Я не могу на всю жизнь заставить эти фрагменты пройти валидацию. У меня есть идеальный строгий документ 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 отображается в текстовой области!

Есть идеи?

1 Ответ

1 голос
/ 16 октября 2011

Если вы хотите, чтобы тэг формы был содержимым текстовой области, просто закодируйте <как <"как" & как & и> как>:

<?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>
...