为什么 PHP 自动 html 不解码我的 POST?
我正在为一个项目使用 Zend Framework。为什么当我发出 POST 请求并通过 $this->_request->getParams() 获取控制器中的参数时,它显示未解码的值?例如像 Speakers & 这样的字符串HTML 表单中的键盘
被检索为 Speakers & PHP 中的 getParams() 键盘
。
PHP 不会自动解码每个发布的值吗?
I'm using Zend Framework for a project. Why when I make POST request and get the params in my controller by $this->_request->getParams()
it shows undecoded values? For example a string like Speakers & keyboards
in my HTML form is retrieved as Speakers & keyboards
from getParams() within PHP.
Doesn't PHP autodecode every posted value?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
那么问题是您正在发送 HTML 并且您想要文本。
当您从页面获取内容时,获取的是文本而不是 HTML。因此,不要使用
innerHTML
或 jQuery 的.html()
。获取一个 textNode 并读取其data
属性,或使用 jQuery 的.text()
。The problem then, is that you are sending HTML and you want text.
When you grab the content from the page, get text instead of HTML. So don't use
innerHTML
or jQuery's.html()
. Get a textNode and read itsdata
property, or use jQuery's.text()
.因为没有理由这样做。
数据被编码以供传输,然后再次解码。 HTML 不是用于传输的编码。
期望接收 HTML 的唯一原因是 HTML 是否已发送,如果发送了 HTML,则(大概)需要 HTML。接下来通常不会发生转换为文本的事情。
Because there is no reason to do so.
Data is encoded for transport, and then decoded again. HTML isn't an encoding used for transport.
The only reason to expect to receive HTML is if HTML was sent, and if HTML is sent then (presumably) HTML is desired. Converting to text wouldn't often be a desired thing to happen next.
PHP 自动解码转义的内容,而不是 HTML 实体中的内容。
PHP autodecodes the escaped content, not content which is in HTML entities.