PHP nl2br 发布重复的<br/>?

标签 php

我使用以下代码将文本框的内容发布到 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/

相关文章:

php - 通过 $wpdb 获取所有帖子的元值

php - 从php以特定用户身份执行bat文件

php - 跨度上的CSS边框崩溃?

php - 杀死后台 php 脚本(共享主机)

php - 外键一对多(postgresql、php、yii2)

php - 使用 filter_var 验证带有和不带有协议(protocol)的 URL

php - 如何在 laravel 5.8 中使用批量分配上传图像?

php - Paypal 订阅 IPN 自定义变量

php - 如何从 php 创建的表格中获取所选单元格的值?

php - 无法通过php连接到远程主机上的MongoDB