所以我有这个php:
<?php
if (isset($_COOKIE["currentsearchctrl"])) {
$cookz = $_COOKIE["currentsearchctrl"];
$data = explode(';', $cookz, -1);
$newdata = array();
foreach($data as $value){
$newdata[] = explode(':', $value, -1);
}
print_r($newdata);
} else { }
?>由php读取的cookie:
%20Rod%20Stewart%20%3A%2059088763306%3B%20Led%20Zeppelin%20Official%20%3A%20131572223581891%3B%20Lynyrd%20Skynyrd%20%3A%206983887641%3B%20Black%20Sabbath%20%3A%2056848544614%3B
但“print_r”正在输出:
Array ( [0] => Array ( [0] => Rod Stewart ) [1] => Array ( [0] => Led Zeppelin Official ) [2] => Array ( [0] => Lynyrd Skynyrd ) [3] => Array ( [0] => Black Sabbath ) )“id”不见了。我需要的是。=>阵列( => Rod Stewart,1 => 1200420 )1 =>阵列( =>领导齐柏林飞艇,1 => 110024294 )
为了提供帮助,这是print_r($data)的输出:
Array ( [0] => Rod Stewart : 59088763306 [1] => Led Zeppelin Official : 131572223581891 [2] => Lynyrd Skynyrd : 6983887641 [3] => Black Sabbath : 56848544614 )有人能帮忙吗?
发布于 2011-11-24 16:52:59
为什么不尝试使用正则表达式呢?
<?php
if (isset($_COOKIE["currentsearchctrl"])) {
$cookz = urldecode($_COOKIE["currentsearchctrl"]);
preg_match_all("#(?P<artist>(?:\w|\s)+)\s:\s(?P<id>\d+)#", $cookz, $matchs, PREG_SET_ORDER);
print_r($matchs);
} else { }
?>编辑:对不起,我没有注意到名字没有完整
示例:全
发布于 2011-11-24 17:01:00
我想这就是你想要做的
$data = array (0 => "Rod Stewart : 59088763306", 1 => "Led Zeppelin Official : 131572223581891", 2 => "Lynyrd Skynyrd : 6983887641", 3 => "Black Sabbath : 56848544614" );
$data = array_map(function($item){
list($artist, $id) = explode(' : ', $item);
return array('id'=>$id, 'artist'=>$artist);
}, $data);
print_r($data);输出
Array
(
[0] => Array
(
[id] => 59088763306
[artist] => Rod Stewart
)
[1] => Array
(
[id] => 131572223581891
[artist] => Led Zeppelin Official
)
[2] => Array
(
[id] => 6983887641
[artist] => Lynyrd Skynyrd
)
[3] => Array
(
[id] => 56848544614
[artist] => Black Sabbath
)
)发布于 2011-11-24 16:46:59
使用序列化()和取消序列化()
$data = serialize($cookz);序列化字符串可以确保将精确的结构存储到字符串中,以便稍后恢复。
https://stackoverflow.com/questions/8260242
复制相似问题