【问题标题】:How to post special/reserved characters from HTML forms to PHP pages?如何将 HTML 表单中的特殊/保留字符发布到 PHP 页面?
【发布时间】:2012-08-09 15:39:25
【问题描述】:

我有一个如下所示的表单:

<form action="/assesment/savelist/" method="post">
    <input type="hidden" name="owner" value="<?php echo $userid ?>" />
    <input type="text" name="title" value="Question List Title" />
    <textarea name="description"></textarea>
    <input type="submit" />
</form>

在描述中人们必须能够使用£ 字符(以及其他不允许的字符)。

在将它们发布到我的 PHP 页面之前,是否可以将这些字符转换为允许的内容?


大家好,到目前为止,感谢您的 cmets。

如果我在“保存问题”上执行 print_r($_POST),它会将从该表单发送给它的 postdata 发送出去。

但是,如果任何字段中有 £,则不会发送该特定字符。例如,如果我要从该表单中发布“sdfsdfs £ adasd”,那么将发送的所有内容都是“sdfsdfs adasd”

问题是如何将 £ 转换为可以从 HTML 表单中作为发布数据发送的内容。

【问题讨论】:

  • 你试过htmlspecialchars()吗?
  • @Matt 你用 £你什么时候填写网络表格?
  • 如何破解?描述你的问题。您正在寻找的解决方案方向错误。
  • 理智的方法是仅在显示特殊字符时对其进行编码。
  • @Vatev 但这与显示无关。这是关于输入。

标签: php special-characters html-post


【解决方案1】:

赢了!

解决方法是在表单标签中添加accept-charset="utf-8"。

我没有将其添加到页面标题的选项,但将其添加到表单标签解决了我所有的问题。非常感谢 @deceze 发布指向该网站的链接 http://kunststube.net/frontback/

【讨论】:

  • 您可能还想检查页面本身的编码。
【解决方案2】:

当通过标准表单提交机制提交数据时,浏览器会自动对数据进行编码。

PHP 将在填充 $_POST/GET/REQUEST 时自动解码数据。

在那个阶段你不需要做任何事情。

在将数据插入数据库/某些 HTML/电子邮件/URI/某些其他数据格式之前,您可能需要对其进行编码,但这取决于您对数据的处理方式。

【讨论】:

  • 如果 PHP 实例不支持/使用 unicode 怎么办? (那么非 ASCII 字符如何处理呢?)
  • @pst 默认情况下,浏览器使用页面编码对发布数据进行编码。如果您不支持 unicode,则页面编码将不是 unicode。
  • @Vatev Neat。我从来不知道。
【解决方案3】:

当通过标准表单提交机制提交数据时,浏览器将“自动”“编码”数据。

【讨论】:

    猜你喜欢
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 2010-09-17
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多