为什么';PHP自动html解码我的帖子?

为什么';PHP自动html解码我的帖子?,php,post,decode,Php,Post,Decode,我正在为一个项目使用Zend框架。为什么当我通过$this->\u request->getParams()发出POST请求并获取控制器中的参数时,它会显示未编码的值?例如,在我的HTML表单中,像Speakers&keyboards这样的字符串被检索为Speakers&;键盘来自PHP中的getParams() 难道PHP不自动解码每个发布的值吗?因为没有理由这么做 数据被编码以便传输,然后再次解码。HTML不是用于传输的编码 期望接收HTML的唯一原因是如果发送了HTML,并且如果发送

我正在为一个项目使用Zend框架。为什么当我通过
$this->\u request->getParams()
发出POST请求并获取控制器中的参数时,它会显示未编码的值?例如,在我的HTML表单中,像
Speakers&keyboards
这样的字符串被检索为
Speakers&;键盘
来自PHP中的getParams()


难道PHP不自动解码每个发布的值吗?

因为没有理由这么做

数据被编码以便传输,然后再次解码。HTML不是用于传输的编码


期望接收HTML的唯一原因是如果发送了HTML,并且如果发送了HTML,则(大概)需要HTML。转换成文本通常不是下一步想要做的事情。

因为没有理由这样做

数据被编码以便传输,然后再次解码。HTML不是用于传输的编码


期望接收HTML的唯一原因是如果发送了HTML,并且如果发送了HTML,则(大概)需要HTML。转换为文本通常不是下一步要做的事情。

PHP自动解码转义内容,而不是HTML实体中的内容。

PHP自动解码转义内容,而不是HTML实体中的内容


嗨,约翰,谢谢你的提示!我认为这才是真正的问题所在,因为我正在发出一个AJAX POST请求,它从HTML页面获取数据。所以我最好在发送请求之前使用类似urlDecode()的东西。。。你觉得怎么样

那么问题是,您发送的是HTML,而您需要文本

从页面获取内容时,获取文本而不是HTML。所以不要使用
innerHTML
或jQuery的
.html()
。获取一个textNode并读取其
数据
属性,或者使用jQuery的
.text()


嗨,约翰,谢谢你的提示!我认为这才是真正的问题所在,因为我正在发出一个AJAX POST请求,它从HTML页面获取数据。所以我最好在发送请求之前使用类似urlDecode()的东西。。。你觉得怎么样

那么问题是,您发送的是HTML,而您需要文本



从页面获取内容时,获取文本而不是HTML。所以不要使用
innerHTML
或jQuery的
.html()
。获取一个textNode并读取其
数据
属性,或者使用jQuery的
.text()

您正在表单中输入
&
,并收到
&在服务器上?这很奇怪。是的,这正是我收到的。真奇怪是啊!它是纯文本输入吗?还是JavaScript所见即所得编辑器?使用Firebug/Chrome debugger/Charles/等检查浏览器实际发送的内容。您如何确定数据是什么?你是在把它原封不动地回显到浏览器上吗?是否将其转储到错误日志?通过一个需要文本并输出HTML的模板函数输出它?如果真的有一些自动转义,请在php.ini中查找
过滤器.default=
设置。不确定ZF,但它很可能有类似的内置功能。您正在表单中输入
&
,并收到
&在服务器上?这很奇怪。是的,这正是我收到的。真奇怪是啊!它是纯文本输入吗?还是JavaScript所见即所得编辑器?使用Firebug/Chrome debugger/Charles/等检查浏览器实际发送的内容。您如何确定数据是什么?你是在把它原封不动地回显到浏览器上吗?是否将其转储到错误日志?通过一个需要文本并输出HTML的模板函数输出它?如果真的有一些自动转义,请在php.ini中查找
过滤器.default=
设置。关于采埃孚并不确定,但它很可能有类似的内置功能。大卫,请看德塞兹的评论。我想你可能误解了我的问题。谢谢。大卫,请看德塞兹的评论。我想你可能误解了我的问题。谢谢。嗨,约翰,谢谢你的提示!我认为这才是真正的问题所在,因为我正在发出一个AJAX POST请求,它从HTML页面获取数据。所以我最好在发送请求之前使用类似urlDecode()的东西。。。你觉得怎么样?我想我可能会在发送ajax请求之前使用html_实体_解码javascript模拟。你认为这是一个解决方法吗?也许有更好的方法?为什么不在服务器上做呢?这迫使任何使用API的人都遵守——服务器端验证通常优于客户端验证。否则,我认为问题出在AJAX库的某个地方。Urinecode不应该在你的内容中添加任何实体编码。是的,我在服务器上使用html_entity_decode,我在评论时感到困惑,抱歉。谢谢你的帮助!我只是想知道这一切是否是我正在做的一种变通方法。。。。不管怎样,我都使用jQuery,我从来没有注意到jQuery这样做。启动HTTP嗅探器来确定问题是在JavaScript中还是在PHP中可能是明智的。我98%肯定这会发生在客户方,但这是错误的。你可以使用Firebug的网络面板、Webkit的网络面板,或者像Fiddler(windows)或HTTPScoop(Mac)这样的外部应用程序来实现这一点。嗨,John,谢谢你的提示!我认为这才是真正的问题所在,因为我正在发出一个AJAX POST请求,它从HTML页面获取数据。所以我最好在发送请求之前使用类似urlDecode()的东西。。。你觉得怎么样?我想我可能会在发送ajax请求之前使用html_实体_解码javascript模拟。你认为这是一个解决方法吗?也许有更好的方法?为什么不在服务器上做呢?这迫使任何使用API的人都遵守——服务器端验证通常优于客户端验证。否则,我认为问题出在AJAX库的某个地方。Urinecode不应该在你的内容中添加任何实体编码。是的,我在服务器上使用html_entity_decode,我在评论时感到困惑,抱歉。谢谢你的帮助!我只是想知道这一切是否是我正在做的一种变通方法