我使用以下代码将文本框的内容发布到 HTML 文件。提交信息后,我希望有 <br/>
插入换行符所在的位置。我认为使用这段代码可以解决问题:
$content = nl2br($_POST['content']);
但如果已经有 <br />
,它似乎会产生以下结果:到位:
Lorum ipsum.
<br /><br />
如何解决这个问题?
邮政编码:
<?php
$fn = "people.html";
if (isset($_POST['content']))
{
$content = stripslashes('content');
$content = nl2br($_POST['content']);
$fp = fopen($fn,"w") or die ("Error opening file in write mode!");
fputs($fp,$content);
fclose($fp) or die ("Error closing file!");
}
?>
如何提交:
<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
<textarea rows="25" cols="40" name="content"><?php readfile($fn); ?></textarea>
<input type="submit" value="Sauver">
</form>
最佳答案
据我了解,如果您插入的html已经包含 <br />
标签,然后它会添加两个,因为 \n
<br />
之后,要解决此问题,您需要使用 str_replace 或正则表达式从输入中删除 extra 中断标记。
然后,当将结果回显到文本区域时,您应该使用:<?=htmlentities(file_get_contents($fn))?>
正如 SpoonNZ 建议的那样。
注意:使用用户提交的html而不通过htmlentities
或$_SERVER["PHP_SELF"]
在表单中将导致 XSS
关于PHP nl2br 发布重复的<br/>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752309/