我试图模仿由AJAX在PHP中使用cURL发出的POST请求。单引号JS encodeuri vs PHP rawurlencode
有一件事我注意到了,为什么PHP将单引号转义为%27
,而JS的encodeuricomponent保持原样呢?
在PHP中真的有一个函数实际上与JS相同吗?
我试图模仿由AJAX在PHP中使用cURL发出的POST请求。单引号JS encodeuri vs PHP rawurlencode
有一件事我注意到了,为什么PHP将单引号转义为%27
,而JS的encodeuricomponent保持原样呢?
在PHP中真的有一个函数实际上与JS相同吗?
您不会找到不编码单引号的PHP函数。原因是PHP坚持更严格到RFC 3986其中包括单引号。
RFC 3986
保留特殊字符,如!, ', (,), and *
。
的URI包括由
字符中的“保留”的组分隔的组件和子组件。这些字符被称为“保留”,因为它们可能(或可能不)被定义为定界符的一般语法,每个方案特定语法或URI的解引用算法的实现特定语法。
如果URI组件数据将与保留
字符的目的作为分隔符冲突,则冲突的数据必须是在形成之前URI编码百分之 。保留= GEN-delims /子delims
GEN-delims = “:” “?”/ “/”/ /“#”/“[”/“]”/“@”
sub-delims =“!” /“$”/“&”/“'”/“(”/“)” /“*”/“+”/“,”/“; /“=”
如果你想匹配的PHP和单引号编码在JS你可以使用这样的功能。
function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!'()*]/g, escape);
}
为什么你需要不编码它?它仍应该与CURL一起工作。
为什么不建立一个数组并使用'http_build_query()'。 – Brad 2012-04-16 01:23:44
它仍然是%27 – 2012-04-16 11:30:45