我正在尝试替换相当大的数组的键,以便我只从中获取一个特定的数据。我的客户端将一组特定格式的数据粘贴到文本中,然后将其加载到表格中的一系列列中,如下所示:
textarea数据如下:
rp1=1, rp2=3, rp4=5 etc etc
如果我在帖子上进行var转储,我会得到这个:
array(33) { [0]=> string(2) " 8" [1]=> string(5) "RP2=7" [2]=> string(5) "RP3=9" [3]=> string(6)...
我想要做的就是给我一个关键的数字,所以例如,如果你看看var_dump,我用一个字符串替换命中第一个键,所以我只得到数组系列中的8
。我想要知道一种方法来攻击所有这些,因为一些字符串包含4个字符和一些5.就像rp1=1 and rp10=2
一样。
他们通过这样做从textarea获取数据:
$stenData = explode(', ', $_POST['stenData']);
答案 0 :(得分:1)
使用array_map()
的方法很多,但是如果你有var=num
语法,那么将其解析为查询字符串而不是构造正则表达式:
$result = array_map(function($v) { parse_str($v, $r); return current($r); }, $stenData);
或者从发布的字符串中执行此操作,只需将,
替换为&
即可将其转换为要解析的查询字符串:
parse_str(str_replace(', ', '&', $_POST['stenData']), $result);
$result
产生的结果如下:
Array
(
[rp1] => 1
[rp2] => 3
[rp4] => 5
[TS1] => 7
[FE1] => 7
)
由于评论中有各种各样的正则表达式:
preg_match_all('/[^=]=(\d+)/', $_POST['stenData'], $matches);
print_r($matches[1]);