我有一个所见即所得编辑器正在将我的&符号从&
更改为&
提交数据时会发生的事情是&被丢弃,以前的一切都完好无损。我不久前问过这个问题,但似乎无法得到答案。我们认为可能是编辑,但我确认在提交后&符号正在转换。是否有一个PHP函数将逃脱这些ascii字符?
答案 0 :(得分:1)
听起来好像没有正确编码。您是自己构建请求(例如使用AJAX)吗?
根据您正在使用的AJAX库(如果有),您可能需要手动转义数据:
想象一下,你的编辑包含“Beans& sausages”。您将其发布在变量“text”中:
text=Beans&sausages
这看起来像PHP
text = Beans
sausages = null
在Javascript中使用encodeURIComponent()来修复此问题。
答案 1 :(得分:0)
你能够在提交原始内容时print_r()来验证PHP是否获得整个字符串?
如果你的编辑器正在用&符号将其删除,那么在涉及PHP之前就会出现问题。
答案 2 :(得分:0)
我认为这里的问题在其他地方,因为编辑所做的是绝对正确的。我建议检查PHP接收的值($ _REQUEST数组中的值),如果缺少字符,请检查在线路上发送的POST或GET请求(即使用firebug或类似)。我认为在发送之前,该值会被错误地。
答案 3 :(得分:0)
也许某个地方函数htmlentities
在您的文本中被调用了吗?您可以使用html_entity_decode
对其进行解码。虽然已经阅读了大部分回复和你的问题,但我会看一下提交AJAX的代码,你很可能需要在将它作为发布数据传递之前对javascript中的字符串进行urlencode。大多数图书馆都会为您处理。如果您手动组装数据,则应调用函数encodeURIComponent
。
var postData = encodeURIComponent(key) + '=' + encodeURIComponent(value).replace(/%20/g,'+');
我在你的一条评论中注意到你使用的是jQuery函数。 jQuery有一个名为$.param()
的辅助函数,它将为你编码一个可以设置的字符串,或者更简单的是将一个对象传递给ajax调用的data参数(在内部它将通过$.param()
<传递/ p>
$.ajax({
method:'POST',
url: '/somefile.php',
data: {
rt: $("textarea#rt").val(),
Type: 1,
//.... more data here
},
success: function(data) {
}
});