【问题标题】:HTML textarea newline characterHTML textarea 换行符
【发布时间】:2011-04-30 12:09:38
【问题描述】:

我在HTML 中有一个文本区域,用户可以在其中输入文本,但是当提交表单并将其传递给echophp 脚本时,没有任何换行符。知道HTML 会这样做,我尝试在回应它之前先做一个preg_replace()...

    echo preg_replace("/\n/", "<br />", $_GET["text"]);

但一切都在一条线上。

所以我最好的猜测是HTML textareas 使用了不同的换行符...有人能解释一下这个主题吗?

编辑

好的,所以我发现了问题:Javascript 正在剥离换行符。 view code here

编辑 2

好的,感谢 Jason 解决了这个问题。我需要做的:

    escape(document.getElementById('text'));

不仅仅是:

    document.getElementById('text');

并且换行符被保留,问题解决了!

【问题讨论】:

    标签: php html textarea newline


    【解决方案1】:
    echo nl2br($_GET['text'])
    

    不过,您的preg_replace 为我工作!

    【讨论】:

    • 查看源代码时,是否打印新行?例如,在您提交表单后,echo $_GET['text'] 您在实际的未格式化 HTML 中看到了什么?
    • 如果我直接echo $_GET['text'],我可以将所有内容都集中在一条线上...奇怪...
    • 您在查询字符串中得到了什么?我在 QS 中得到 %0D%0A 代替 \n+ 代替空格)。
    • 当我在表单中的 asdfs 之间添加换行符时,我的查询字符串只是遇到了 asdfasdf... 这是代码:pastebin.com/raw.php?i=w79aMvSv
    • 呃哦,那很糟糕。你应该使用nl2br(htmlspecialchars($_GET['text']))
    【解决方案2】:

    通常在测试任何字符串中的换行符时,我使用/[\n\r]/,只是为了覆盖我的基础。我的猜测是这将匹配新行。

    【讨论】:

    • 您可能有一些奇怪的编码,或者在您获得 GET 数据之前可能会删除中断?该正则表达式将匹配任何换行符,我现在将它用于 web 应用程序(好吧,实际上我使用 '/([^\n\r]+)[\n\r]/',但它本质上是一样的。
    • 我想知道你是否也得到了休息,也被剥夺了。
    • 这似乎是正在发生的事情...我主要通过 Javascript 调用页面...我将粘贴代码
    • 好点,@Jesse,关于同时包含 CR 和 LF,但如果将它们包含在括号 (OR) 中,您将得到重复的 &lt;br/&gt;。这是由于浏览器在表单上同时提交 CR 和 LF 的 HTML 规范。你会想要$newItem['about'] = preg_replace('/\r\n/', '&lt;br/&gt;', $newItem['about']);
    猜你喜欢
    • 2013-02-27
    • 2012-10-23
    • 2016-01-11
    • 2012-11-09
    • 1970-01-01
    • 2014-07-27
    • 2019-03-30
    • 1970-01-01
    • 2012-11-09
    相关资源
    最近更新 更多