这是 $ postfields 值:
image=%40E%3A%5Cdev%5Cphoto.jpg&oauth_timestamp=1291739697&oauth_token=123456&tile=true
我需要取出该值的 image = xxxxx 部分,所以我最后只有这个:
oauth_timestamp=1291739697&oauth_token=123456&tile=true
我尝试使用explode()和parse_str()方法但没有成功。最好的解决方案是在长字符串中找到任何 image = xxxxx ,然后将其转换为如下数组:
$array['image'] = '%40E%3A%5Cdev%5Cphoto.jpg';
$array['oauth_timestamp'] = '1291739697';
$array['oauth_token'] = '123456';
$array['tile'] = 'true';
这种方式很容易被取消($ array ['image'])然后implode()返回所有内容。有关如何做到这一点的任何想法?谢谢!
答案 0 :(得分:3)
使用parse_str()
将其拆分,然后http_build_query()
将其重新组合在一起。
答案 1 :(得分:1)
使用& oauth的strpos,然后使用substring
$rest = substr($post_data, strpos($post_data, '&oauth'));
答案 2 :(得分:0)
这应该可以解决问题:
function removeVarFromQueryString($varToRemove, $originalQs=null) {
if (!$originalQs) {
$originalQs = $_SERVER['QUERY_STRING'];
}
$params = [];
parse_str($originalQs, $params);
unset($params[$varToRemove]);
return http_build_query($params);
}
然后为你的例子:
$qs = "image=%40E%3A%5Cdev%5Cphoto.jpg&oauth_timestamp=1291739697&oauth_token=123456&tile=true";
echo removeVarFromQueryString("image", $qs); // => oauth_timestamp=1291739697&oauth_token=123456&tile=true