PHP Regex String Parse



我有一个用以下结构组成的字符串 - 括号中的ID,然后是该ID的值,字符串可以包含ID和值对的数量和值对。例如(00(content1(r3(content2(27(content3(5c(content4

我想解析字符串并返回带有括号中元素键的ID的数组,而内容为值,例如。

Array
(
    "00" => "CONTENT1"
    "R3" => "CONTENT2"
    "27" => "CONTENT3"
    "5C" => "CONTENT4"
)

以下方面的任何帮助来解析此字符串。

在https://regex101.com/上对此进行了测试,并且像您期望的那样将您的字符串分开:

$string = '(00)CONTENT1(R3)CONTENT2(27)CONTENT3(5C)CONTENT4';
preg_match_all('/((w+))(w+)/mi', $string, $matches);
// Just reformatting to the desired output
$result = array_combine($matches[1], $matches[2]);
print_r($result);

给出:

Array
(
    [00] => CONTENT1
    [R3] => CONTENT2
    [27] => CONTENT3
    [5C] => CONTENT4
)

或不使用 str_replaceparse_str

<?php
$str = str_replace(['(', ')'], ['&', '='], '(00)CONTENT1(R3)CONTENT2(27)CONTENT3(5C)CONTENT4');
parse_str($str, $array);
print_r($array);

https://3v4l.org/mkl2z

结果:

Array
(
    [00] => CONTENT1
    [R3] => CONTENT2
    [27] => CONTENT3
    [5C] => CONTENT4
)

最新更新