将HTML代码作为textarea的值

3

我正在开发一款简单的代码编辑器,并拥有以下简单的HTML页面:

<div class="container">
<h1>Test</h1>
<p>Hello world !</p>
</div>

我需要创建一个简单的表单,以便能够编辑此页面并保存更改,这是我的代码:

<?php
  $text = file_get_contents("test.html");
?>
<form method="POST">
    <fieldset>
        <textarea name="text"  value="<?php echo $text;  ?>" >
        </textarea>
        <button type="submit" class="btn">Send</button>
    </fieldset>
</form>

很遗憾,这种方法不起作用,并且无法将所有HTML代码解析为文本。在运行脚本后,文本区域的实际值如下:

<h1>Test</h1>
    <p>Hello world !</p>
</div>" >

看起来它将带有class声明的div解析为有效的html代码,而不是文本。

可能是由于"引起的。

我也尝试了这个,但结果完全相同:

<textarea name="text"  value="<?php echo "<![CDATA[".$text."]]>";  ?>" >

有人可以帮我将整个HTML页面的内容作为textarea的值获取吗?


1
尝试使用此函数及类似函数:http://php.net/manual/zh/function.htmlentities.php - Jurik
在文本区域中没有值。请使用以下代码: - Royal Bg
@RelicSet 当我在<textarea>标签之间传递内容时,它对我完美地起作用。它破坏了'value'参数,因为它在双引号内,并且被<div>标签的双引号所破坏。 - Royal Bg
4个回答

3

要向文本区域添加数据,您需要在<textarea>标签之间进行回显,而不是作为值。(textarea文档)。

<textarea name="text"><?php echo $text;?></textarea>

3
好的,直到用户狡猾地决定在 $text 中添加 "</textarea>",然后他就可以直接在文档中编写 HTML。 - Codesmith
公平地说,这个问题并没有暗示它是用户输入,如果我对输入进行了清理处理,我认为我会让答案变得更加复杂。 - piddl0r
1
没问题!;-) 我只是在考虑那些不知情的人会遇到它并将其用作用户输入的解决方案,而不考虑卫生处理。我实际上有这段代码,知道它不卫生,并找到了这个问答希望它能展示如何转义它。无论如何,我只是在它周围加上了 'htmlspecialchars',现在它可以正常工作了。 - Codesmith

1
你可以使用以下其中之一。
<textarea name="text"><?php echo $text;  ?></textarea>

or 

<textarea name="text"><?php echo htmlentities($text)  ?></textarea>

or 

<textarea name="text"><?php echo htmlspecialchars($text)  ?></textarea>

0

试试这个

这很简单

<textarea name="text" rows="10" cols="50"><?php echo $text; ?></textarea>

这里的 colsrowstextarea 的属性。你不能把你的值放在那个位置。你可以把你的值 <?PHP echo $text;?> 放在 <textarea></textarea> 之间。


-1

你需要在标签<textarea></textarea>之间包含你的值:

<textarea name="text"><?php echo $text; ?></textarea>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接