我在php中使用Preg_match_all并编写了一个正常运行的正则表达式
正则表达式:'/"([0-9A-z ]*)("|$)/'
要搜索的字符串是:
["100"]
["100","200"]
["100","200","300"]
来自preg的数组
array (
0 =>
array (
0 => '"100"',
1 => '"200"',
2 => '"300"',
),
1 =>
array (
0 => '100',
1 => '200',
2 => '300',
),
2 =>
array (
0 => '"',
1 => '"',
2 => '"',
),
)
所以我从数组1获取数据
但现在我们也得到了以下数据:
[100]
[100,200]
我想要两种类型的单一正则表达式但不能这样做。 我试着写
/"([0-9A-z ]*)("|$)|[0-9]*/
但它没有给出我的预期。 任何人都可以帮助我
还需要做一件事: - 当我使用正则表达式时,Lets说数据如下: -
["",""]
我得到的数组: -
array (
0 =>
array (
0 => '""',
1 => '""',
),
1 =>
array (
0 => '',
1 => '',
),
2 =>
array (
0 => '"',
1 => '"',
),
)
所以从这一点开始我就拿阵列1,所以变空了 但我得到的所有正则表达式都在给我: -
array (
0 =>
array (
),
)
正则表达式是否能够满足以下所有条件。
答案 0 :(得分:1)
您可以利用eval
method:
$string = '["100","200","300"]';
// $string = '[100,200, 300]';
eval('$array = array('.$string.');');
print_r($array);
请参阅IDEONE demo
根据您的输入,可以有两种方法。
最难的方法是确保我们在[...]
内:
(?:\[|(?<!^)\G)"?,?([0-9 ]+)"?,?(?=[^]]*\])
请参阅demo
如果您的输入已经过预先过滤,并且您只获得了如上所示的字符串,则可以使用更高效的正则表达式:
[0-9 ]+(?="?|,)
请参阅demo
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用PHP提供的构建函数,以您希望的方式对其进行简单解码。
使用json_decode
你可以在这里看到实施: - https://ideone.com/IFEe6p
此功能适用于除[] [,,]
以外的所有内容
这些类型的字符串应该单独处理。