我使用PHP来匹配以下数据类型:
[["1200","135"],["127","13"]]
我想将所有数字提取到一个单独的数组中,如下所示:
array(array(1200,135),array(127,13));
我使用preg_match来捕获元素,但到目前为止,我甚至无法将它们与规则相匹配。 如果有人可以帮助我纠正我的规则,甚至提供解决方案来解决这个问题,我将很高兴。
我的正则表达规则是:/ ^[ ([" (\d+) "," (\d+) "])*(,)* ]$ /
我一直保持不转让它在这个论坛上更具可读性。但它不起作用。 请帮忙
答案 0 :(得分:10)
尝试
var_dump( json_decode('[["1200","135"],["127","13"]]') );
给出:
array(2) {
[0]=> array(2) {
[0]=> string(4) "1200"
[1]=> string(3) "135"
}
[1]=> array(2) {
[0]=> string(3) "127"
[1]=> string(2) "13"
}
}
参见PHP手册:
json_decode
- 解码JSON字符串答案 1 :(得分:3)
正则表达式中的一些错误是:使用开始和结束锚点(^和$)而不是转义方括号。
但是确实使用了json_decode(),这就是它的用途。
答案 2 :(得分:1)
非常简单:
$proper = '[["1200","135"],["127","13"]]';
$nuked = '[["1200",,"135"],[["127","13"]]';
$pattern = '/[["[0-9]*","[0-9]*"],["[0-9]*?","[0-9]*"]]/s';
echo "proper: ". preg_match($pattern, $proper);
echo "<br>";
echo "nuked: ". preg_match($pattern, $nuked);
输出:
proper: 1
nuked: 0
除了"
之间的数据可以改变之外,它几乎必须与您提供的完全一致。我希望这是你想要的?
答案 3 :(得分:0)
您似乎正在处理JSON,因此请使用json decode,如下所示:
php > print_r(json_decode('[["1200","135"],["127","13"]]'));
Array
(
[0] => Array
(
[0] => 1200
[1] => 135
)
[1] => Array
(
[0] => 127
[1] => 13
)
)