我正在编写一个php应用程序,通过curl数据提交注册iContact电子邮件列表.但是我一直收到无效的电子邮件地址错误.我想这可能是因为我正在逃避@符号,所以它看起来像%40而不是@.另外,根据curl_setopt与CURLOPT_POSTFIELDS的php文档:
要在HTTP"POST"操作中发布的完整数据.要发布文件,请在文件前加上@并使用完整路径.
那么,无论如何通过php中的curl传递@符号作为发布数据而不首先通过urlencode运行它?
http_build_query()
在传递数据数组之前首先使用它curl_setopt()
,这将导致它发送表单application/x-www-form-encoded
而不是multipart/form-data
(因此@不被解释).
另外你为什么真正关心电子邮件地址中的@?只有@是第一个字符,而不是中间的某个字符才重要.
在搜索PHP curl手册之后,我发现如果post字段是字符串而不是文件(如果使用multipart/form-data编码发布),则没有信息可以转义第一个'@'.
我解决这个问题的方法是在文本的开头添加一个空白.虽然我们的后端API将剥离空白,因此它可以删除空白并恢复原始文本.我不知道天气Twitter API会削减用户输入的空白.
如果是这样,此解决方法也适用于您.
如果任何人在使用PHP curl和multipart/form-data编码时找到了逃避第一个'@'的方法,请告诉我们.