我有一个看起来像这样的字符串:
$input_string = '<script>some data =
{
first: [[111,55],[123,66]],
theColor: "#000000",
second: [[111,95],[123,77]]
};
</script>'
正如你所看到的,它是一个复杂的字符串,带有一些可能的垃圾,以及两个数组混合在一起。数组的第一个维度在每个数组中是相同的,即&#39; 111&#39;和&#39; 123&#39; - 这应该是创建新数组的关键。
所以我需要构建新的数组,使用该键/值对并为第一个产生类似的东西:
array() {
'111' =>
array(2) {
'first' =>
string(2) "55"
'second' =>
string(2) "95"
}
}
答案 0 :(得分:1)
我使用正则表达式来提取2个独立数组中的键和值。
请参阅Demo。
<?php
$re = "/(\\[?(?:\\[(\\d{1,}),(\\d{1,})\\]))/";
$str = '<script>some data =
{
first: [[111,55],[123,66]],
theColor: "#000000",
second: [[111,95],[123,77]]
};
</script>';
preg_match_all($re, $str, $matches);
$output = array();
for($i = 0; $i < count($matches); ++$i)
{
// If Key already exists - We push
if(isset($output[($matches[2][$i])]))
array_push($output[($matches[2][$i])], $matches[3][$i]);
// Otherwise we create an array to store possible future values.
else
$output[($matches[2][$i])] = array( 0 => $matches[3][$i]);
}
print "<pre>";
print_r($output);
print "</pre>";
?>
输出:
Array
(
[111] => Array
(
[0] => 55
[1] => 95
)
[123] => Array
(
[0] => 66
[1] => 77
)
)
Ezy Pezy Lemon Squizzy。