有人可以告诉我如何逃避PHP中的&符号吗?

时间:2009-09-04 08:21:10

标签: php jquery ajax

我有一个所见即所得编辑器正在将我的&符号从&更改为&

提交数据时会发生的事情是&被丢弃,以前的一切都完好无损。我不久前问过这个问题,但似乎无法得到答案。我们认为可能是编辑,但我确认在提交后&符号正在转换。是否有一个PHP函数将逃脱这些ascii字符?

4 个答案:

答案 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) {
  }
});