我有一个字符串
$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];