在插入之前替换数组集php中的键

时间:2017-03-01 14:41:26

标签: php

我正在尝试替换相当大的数组的键,以便我只从中获取一个特定的数据。我的客户端将一组特定格式的数据粘贴到文本中,然后将其加载到表格中的一系列列中,如下所示:

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']);

1 个答案:

答案 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]);