我正在尝试用cURL在PHP语言中模仿AJAX发出的POST请求。
我注意到的一件事是,为什么PHP将单引号转义为%27,而JS的encodeuricomponent保持原样?
PHP中真的有一个函数与JS中的函数相同吗?
发布于 2014-02-07 09:38:20
您将找不到不对单引号进行编码的PHP函数。原因是PHP更加严格地遵守RFC 3986,包括单引号。
RFC 3986保留特殊字符,如!, ', (, ), and *。
URI包括由分隔的组件和子组件
“保留”集合中的字符。这些字符被称为
“保留”,因为它们可能(也可能不)被定义为分隔符
一般语法,按每个方案特定的语法或按
URI的取消引用算法的特定于实现的语法。
如果URI组件的数据与保留的
字符作为分隔符的用途,则必须在形成URI之前对冲突数据进行百分比编码。
保留= gen-delims / sub-delims
gen-delims = ":“/”?“/ "#”/ "@“
sub-delims = "!“/ "$”/ "&“/ "'”/ "(“/ ")”/ "*“/ "+”/ ",“/ ";”/ "=“
如果您希望匹配php并将单引号编码为js,则可以使用如下函数。
function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!'()*]/g, escape);
} 为什么你不需要对它进行编码?它应该仍然适用于卷曲。
https://stackoverflow.com/questions/10167707
复制相似问题