【问题标题】:Encode '\r\n' in HTML text input在 HTML 文本输入中编码 '\r\n'
【发布时间】:2017-04-07 20:51:31
【问题描述】:

以下 PHP 代码打印从 HTML 文本输入中获取的字符串。

<div class="form-group">
<label for="sender">Your text</label>
<input type="text" name="sender" id="sender" class="form-control" placeholder="example" />
</div>

<?php
print $_POST["sender"]." \r\nSecond senetence.";
?>

请注意连接字符串中的第二个\r\n

HTML form

当我在 HTML 文本输入中输入:\r\nFirst sentence. 时,输出为:

\r\nFirst sentence. Second sentence.

为什么第一个 \r\n 是字面意思,我该如何解决这个问题?

我试过'\r\n' "\r\n" \\r\\n,但似乎没有用。此外,由于我想要 PHP 字符串中的 \r\n&lt;br /&gt;, &amp;#13 and &amp;#10 将不起作用。

【问题讨论】:

  • 查看你的html源代码;换行符没问题。
  • 你还需要一个带有post方法的表单;这是未知的。
  • “我试过 '\r\n'” - 仅供参考:这不会用单引号解析。
  • @Fred-ii- 我发布的 html 代码是来自主 html 表单的 sn-p。如果你愿意,我可以发布整个代码。
  • @Fred-ii- "I've tried '\r\n'" : 一切都打印在屏幕上,包括 \r\n。

标签: php html browser encoding newline


【解决方案1】:

如果你不能更改代码,它会更复杂,但仍然可以。

浏览器将过滤/编码/清理您在文本字段中输入的所有内容,因此您必须在该步骤之后执行一些操作。

我的建议是:

  • 使用火狐
  • 安装扩展TamperData
  • 使用它来修改您发送的文本,例如在开头插入%0D%0A;这是\r\n 的 URL 编码版本

有点麻烦但可行。

【讨论】:

  • 我现在正在查看 TamperData 的使用情况。
  • 非常感谢。在第一次尝试时工作就像一个魅力。
【解决方案2】:

&lt;input type="*"&gt; 不接受换行符。

请改用&lt;textarea rows="1"&gt;&lt;/textarea&gt;

请记住,如果要显示换行符,则必须在 &lt;pre&gt; 或另一个 &lt;textarea&gt; 中显示输出。其他可能性是使用 PHP 的 nl2br()

【讨论】:

  • 我无法更改代码,我与代码的交互是通过文本输入。
猜你喜欢
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多