我从我的cookie中获取了这些值:
a:2:{i:0;s:22:"302260 302250 302248";i:1;s:38:"Bruce Willis Jackie Chan Gary Oldman";}
我需要将这些数据分开,如下所示:
$variable1 = [302260,302250,302248];
$variable2 = [Bruce Willis, Jackie Chan, Gary Oldman];
json_decode
返回NULL
,unserialize
返回:
array ( 0 => '302260 302250 302248', 1 => 'Bruce Willis Jackie Chan Gary Oldman')
现在我不知道如何将名称分解为["Bruce Willis", "Jackie Chan", "Gary Oldman"]
。
答案 0 :(得分:2)
您可以使用正则表达式尝试此操作。这是一个关于如何使其发挥作用的简单示例。
string = 'a:2:{i:0;s:20:"302260 302250 302248";i:1;s:36:"Bruce Willis Jackie Chan Gary Oldman";}';
$unserialized = unserialize($string);
// simple explode for the numbers
$variable1 = explode(" ", $unserialized[0]);
// here it gets harder, to get the result you could use some regex
// this regex will match a word+space+word. With preg_match_all you will get all those occurrences
preg_match_all("/[\w]+\s[\w]+/", $unserialized[1], $matches);
$variable2 = $matches[0];
var_dump($variable1);
var_dump($variable2);
如果名称不总是由空格分隔的两个单词组成,那么这可能会变得更加困难。
在这种情况下,您可以针对某些数据库进行检查,如果您有一个包含这些值的数据库。可以说,这些值来自一些存储的用户数据,您可以将其用作检查。
如果姓名可以用大写/小写写成任何类型的字符,那么你可能完全没有运气。
想象一下像bOb lärson james baldwin jOhn franK frankenstein
这样的数据。你能看出哪些名字在一起吗?
即使使用包含所有名称的全名数据库,也不会100%准确,因为有时也可以将姓氏用作姓氏。