无法使用parse_str提取密文


Cannot extract cipher text using parse_str

我有一个字符串

$data=    ccnumber=6XgVr1EmHI7MoAJNQTMLoZ5IB7XyQ+PS5UMVxapCJT+hAlr7wm+QrIz768+fQ4zBM1QKB6dFXHvn7oR/dL3qMTwyf9Qgls7CvX/IFc+BVJcTwXKXEpD47XOoFFjJkpyGrGFb2TUMwNDkapd6XZWYM4uhXm3fPBoMLxG6G/Po9r39wBvG6szmao7jxkAZmaYMZ/BZXmC9l8YceavKs3cb7dpvW4858tDmUylZHCAcByqivTVj67VIfS1zudq1bDN6YhimrLKDtZx56lMerm6+NhaBclx0yEZxc66tVJYnE9CzUCYl+b4Q1OZyGCY31fz6DVA6KHWKHEkf7XGPgthhcQ==&cvv=111&name=sam

其中每个变量用&分隔,如:

$data=ccnumber={}&cvv={}&name={}

和我使用parse_str解析字符串成这样的变量:

parse_str($data);

所有其他值都可以正确解析,但我无法正确解析密文。有什么解决办法呢?

这是因为parse_str函数假设您正在解析URL的一部分,所以它解码特定的字符。在你的例子中,它应该将+转化为空间。您可以尝试使用正则表达式:

preg_match('@ccnumber=(.*?)&@', $data, $m);
$cipher = $m[1];