Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何取消对字符串的缩放?_Php_Javascript_Escaping - Fatal编程技术网

Php 如何取消对字符串的缩放?

Php 如何取消对字符串的缩放?,php,javascript,escaping,Php,Javascript,Escaping,使用ajaxget方法传递变量。其中我使用escape()函数对字符串进行转义 在php中,我接收值并将其插入数据库 如何取消对字符串的缩放? 例如: balaji's 我明白了 考虑PHP函数,或者 一个不同之处似乎在于对+(加号)的处理 您应该确保使用包含加号的字符串进行测试,以确保选择了正确的函数。不要在客户端使用escape,而要使用encodeURIComponent转义不进行URI编码。(它做了一些类似的事情,但差异很大,您会遇到麻烦。)encodeURIComponent进行标准

使用ajaxget方法传递变量。其中我使用escape()函数对字符串进行转义

在php中,我接收值并将其插入数据库

如何取消对字符串的缩放?

例如:

balaji's
我明白了


考虑PHP函数,或者

一个不同之处似乎在于对+(加号)的处理


您应该确保使用包含加号的字符串进行测试,以确保选择了正确的函数。

不要在客户端使用
escape
,而要使用
encodeURIComponent
<代码>转义不进行URI编码。(它做了一些类似的事情,但差异很大,您会遇到麻烦。)
encodeURIComponent
进行标准URI编码。如果您以正常方式发送数据,PHP应自动为您解码,例如:

var word = "balaji's";
$.ajax({
    url: "yoururl",
    data: encodeURIComponent("word") + "=" + encodeURIComponent(word)
});

如果您不是以默认的“多部分表单”形式发送数据(例如,您正在覆盖
数据类型
),您必须自己通过进行解码。

您可以使用此函数而不是urldecode()

您可以尝试以下方法:

htmlspecialchars(urldecode($str));

作为最后手段,您可以尝试类似的方法(此列表并非详尽无遗,请自行制作或完成)

$search=[%20]、“%3C”、“3E”、“3D”、“22”、“3A”、“3B”、“E0”、“E9”、“E8”、“26”、“E2”、“u2019];
$replace=['','','','','':'','';'','a','e','è','&','–','\'';
str_replace($search,$replace,$your_str);

无论是
urldecode()
还是
rawurldecode()
都不能完全处理已被
escape()
d处理过的数据。一般的做法是使用
encodeURIComponent()
取而代之。我投了反对票,因为这可能会持续很长一段时间,直到遇到函数不匹配的字符。这与个人无关@jedwards@Pekka,我认为要求OP改变它的编码方式是自以为是的。问题不是“我如何从一端到另一端做到这一点”,而是”如何对js的escape()生成的字符串进行解码。此外,我不知道escape()编码的字符中有任何未经urldecode()解码的字符,是吗?如果在正常ASCII以外的UTF-8字符上使用,
escape()
生成如下字符串:
%u0710
其中
urldecode()
无法解码。在这里更改编码方法确实是正确的做法啊,UTF-8——这是很容易被忘记的事情之一,直到它破坏了你的代码——谢谢!@user:你必须发布完整的ajax调用和处理它所用的PHP代码。对我来说,知道
html\u实体\u解码非常有用($str,null,'UTF-8')
解码像“ã”这样转义的字符。我在这里写这篇文章是为了让其他人更容易看到,如果他们和我有同样的问题。请改进你的语法,不清楚你在说什么,甚至对编辑也不清楚!当PHP有内置的url解码支持时,你为什么要自己这么做。
function utf8_urldecode($str) {
        return html_entity_decode(preg_replace("/%u([0-9a-f]{3,4})/i", "&#x\\1;", urldecode($str)), null, 'UTF-8');
}
htmlspecialchars(urldecode($str));
$search = ["%20",'%3C','%3E','%3D','%22','%3A','%3B','%E0','%E9','%E8','%26','%E2', '%u2019'];
$replace = [' ', '<', '>', '=','"',':',';','à','é','è','&','â', '\''];

str_replace($search, $replace, $your_str);