有人能告诉我如何在PHP中避开符号吗?

有人能告诉我如何在PHP中避开符号吗?,php,jquery,ajax,Php,Jquery,Ajax,我有一个所见即所得编辑器,它将我的符号和字符从&更改为& 提交数据时发生的情况是&之后的所有内容都被删除,之前的所有内容都完好无损。不久前我问了这个问题,但似乎没有得到答案。我们认为可能是编辑,但我证实了符号在提交后正在转换。是否有一个php函数可以转义这些ascii字符?您是否能够在提交原始内容时打印原始内容,以验证php是否获取了整个字符串 如果您的编辑器在使用符号时将其切掉,那么在涉及PHP之前这是一个问题。听起来好像它没有正确编码。您是否自己构建请求(例如使用AJAX) 根据您使用

我有一个所见即所得编辑器,它将我的符号和字符从
&
更改为
&

提交数据时发生的情况是&之后的所有内容都被删除,之前的所有内容都完好无损。不久前我问了这个问题,但似乎没有得到答案。我们认为可能是编辑,但我证实了符号在提交后正在转换。是否有一个php函数可以转义这些ascii字符?

您是否能够在提交原始内容时打印原始内容,以验证php是否获取了整个字符串


如果您的编辑器在使用符号时将其切掉,那么在涉及PHP之前这是一个问题。

听起来好像它没有正确编码。您是否自己构建请求(例如使用AJAX)

根据您使用的AJAX库(如果有),您可能需要手动转义数据:

想象一下,你的编辑器包含“豆子和香肠”。您可以在变量“text”中发布此内容:

这看起来像PHP

text = Beans
sausages = null

在Javascript中,使用encodeURIComponent()来解决这个问题。

我认为这里的问题在其他地方,因为编辑器所做的是绝对正确的。我建议检查PHP接收到的值(在$\u请求数组中的值),如果缺少字符,请检查通过线路发送的POST或GET请求(即使用或类似)。我认为在发送之前,该值已损坏。

可能在某个地方,该函数正在或未在您的文本上被调用?您可以使用将其解码回来。不过,在阅读了大多数回复和您的问题之后,我将查看提交AJAX的代码,您很可能需要在将字符串作为post数据传递之前,用javascript对其进行URL编码。大多数库都会为您处理此问题。如果要手动组装数据,则应调用该函数

var postData = encodeURIComponent(key) + '=' + encodeURIComponent(value).replace(/%20/g,'+');
我注意到在您的一条评论中,您使用了jQuery函数。jQuery有一个名为helper的函数,它将为您编码一个可邮递的字符串,或者更简单的方法是将一个对象传递给ajax调用的数据参数(在内部,它将通过
$.param()


实际上,我在提交字符串之前使用了alert(),我可以看到该字符串是由编辑器转换的,转换为&;。一旦PHP获得该字符串,它会在&;之后删除所有内容。我做了打印并验证了这一点。嗨,Greg。我正在使用AJAX将数据提交到PHPGreg,感谢您的帮助。我添加了js函数,现在我得到一个带有值的警报框。下面是字符串:custID=&ID=812&Time=2009-09-03-04:45&Type=1&df=1&rt=

测试和kjhfd

这是封装在函数中的实际变量。var encodeURIComponent(rt)=$(“textarea#rt”).val();这听起来不错。您所描述的是javascript而不是url编码您的数据。您应该检查发送数据的函数,并可能对其进行exend,以确保它确实对所有数据进行url编码。这几乎是100%的客户端问题。谢谢Greg.brb。我将尝试一下。谢谢!!你好!感谢您的回复。字符串通过AJ提交AX在我的PHP脚本的一个post变量中。当它到达PHP脚本时,它丢失了&;后面的字符串。事实上,&也丢失了。
var\u导出($\u post)
并查看您提交给服务器的内容。soulmerge可能是对的-您的问题在前端,早在PHP介入之前。自定义AJAX解决方案,还是使用库?您是否使用
var\u dump($\u请求)验证了它
和firebug?请这样做,您正在尝试根据假设进行调试。好的,我刚刚打印了一份文件,并通过firebug对其进行了测试,它正在做之前所做的事情。它会在&;之后删除所有内容。我可以看到amp;之前的所有内容。请将发布的值附加到您的问题上。使用firebug查找该帖子data:Hi-Gnarf,我已经在使用一段类似于您发布的代码。您是说这段代码为我提供了所需的编码吗?如果是,那么为什么字符串会被撕开?我愿意打赌,您正在将一个键/值对字符串直接传递给数据,而数据不会被编码。这个字符串是您组装并保存的发送POST请求时,在一个值中包含一个
&
,这使PHP停止解析该键/值对。嗨,Gnarf,上面的Greg使用相同的encodeURIComponent()实现了这一点您建议的函数。请看一下我将该函数放置在何处,并告诉我是否应该在您上面发布的代码块中使用它。如果您在jquery ajax调用中将对象参数用于数据,您甚至不需要知道函数encodeURIComponent。请发布您用于cre的整个代码部分开始一个关于它的新问题可能是一个更好的主意,这个问题已经和它的标题无关了。
var postData = encodeURIComponent(key) + '=' + encodeURIComponent(value).replace(/%20/g,'+');
$.ajax({
  method:'POST',
  url: '/somefile.php',
  data: {
    rt: $("textarea#rt").val(),
    Type: 1,
    //.... more data here
  },
  success: function(data) {
  }
});