Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式:make';零次或一次发生';状态,但仅适用于最后一场比赛_Php_Regex_Preg Match_Preg Match All - Fatal编程技术网

Php 正则表达式:make';零次或一次发生';状态,但仅适用于最后一场比赛

Php 正则表达式:make';零次或一次发生';状态,但仅适用于最后一场比赛,php,regex,preg-match,preg-match-all,Php,Regex,Preg Match,Preg Match All,我有这个字符串: key1:val1;key2:val2;key3:val3 也可以这样写: key1:val1;key2:val2;key3:val3; 我想对上面的两个字符串进行预匹配,这样它将返回相同的数组,如下所示: 匹配1 Array ( [0] => key1 [1] => key2 [2] => key3 ) 比赛2 Array ( [0] => val1 [1] => val2 [2] =>

我有这个字符串:

key1:val1;key2:val2;key3:val3
也可以这样写:

key1:val1;key2:val2;key3:val3;
我想对上面的两个字符串进行预匹配,这样它将返回相同的数组,如下所示:

匹配1

Array
(
    [0] => key1
    [1] => key2
    [2] => key3
)
比赛2

Array
(
    [0] => val1
    [1] => val2
    [2] => val3
)
现在,我正在使用这个正则表达式:

(.*?):(.*?);
不幸的是,它不适用于第一个字符串。我以前尝试过使用下面的正则表达式,但结果更糟:

(.*?):(.*?);?
以下是我迄今为止的实验: . 如果有一个纯PHP函数来解决这个问题,我也可以接受

$text = "key1:val1;key2:val2;key3:val3";

preg_match_all("/(.*?):(.*?)(?:;|$)/",$text,$matches);
print_r($matches);


$text = "key1:val1;key2:val2;key3:val3;";

preg_match_all("/(.*?):(.*?)(?:;|$)/",$text,$matches);
print_r($matches);
输出:

Array
(
    [0] => Array
        (
            [0] => key1:val1;
            [1] => key2:val2;
            [2] => key3:val3
        )

    [1] => Array
        (
            [0] => key1
            [1] => key2
            [2] => key3
        )

    [2] => Array
        (
            [0] => val1
            [1] => val2
            [2] => val3
        )

)
Array
(
    [0] => Array
        (
            [0] => key1:val1;
            [1] => key2:val2;
            [2] => key3:val3;
        )

    [1] => Array
        (
            [0] => key1
            [1] => key2
            [2] => key3
        )

    [2] => Array
        (
            [0] => val1
            [1] => val2
            [2] => val3
        )

)

是你想要的吗?@Toto是的,谢谢你,你能把你的答案贴出来吗?这样我就可以把它作为一个被接受的答案了?