【发布时间】:2019-09-01 02:20:46
【问题描述】:
PHP 中有一个内置函数或者一些干净的函数可以将多维数组字符串转换为数组吗?
类似字符串:
['text', 'te\'"x2t', "text", "te\"x'#t", true, True, [false, False, 100, +100], -100, + 10, - 20]
每个值可以是字符串(+转义字符)、布尔值、int(+符号)和数组,使其成为一个多维数组。
收件人:
Array
(
[0] => text
[1] => te'"x2t
[2] => text
[3] => te"x'#t
[4] => 1
[5] => 1
[6] => Array
(
[0] =>
[1] =>
[2] => 100
[3] => 100
)
[7] => -100
[8] => 10
[9] => -20
)
我为此编写了一个正则表达式,它使匹配对这些语句下的字符串有效。 因此,如果字符串不遵循规则,它将不匹配。
(?<_ARRAY>\[\s*(?:(?:(?P>VALUE)|(?P>_ARRAY))\s*,\s*)*(?:(?:(?P>VALUE)|(?P>_ARRAY))\s*)\])
现在我想按原样保存值,不做任何更改。
可以用eval来完成,但据我所知,eval是有风险的,不知道有没有更好的解决方案。
if (preg_match('/(?<_ARRAY>\[\s*(?:(?:(?P>VALUE)|(?P>_ARRAY))\s*,\s*)*(?:(?:(?P>VALUE)|(?P>_ARRAY))\s*)\])/', $array))
eval("\$array = $array;");
【问题讨论】:
-
@thmsdnnr 我在副本中看不到任何真正有助于 OP 的内容,因为答案都取决于是否有一个有效的数组开头。
标签: php