在字符串 php 中查找所有模式


Find all patterns in a string php

这是我的字符串。

$str = '"additional_details":" {"mode_of_transport":"air"}"}],"additional_details":"{"mode_of_transport":"air"}"}],"additional_details":"{"mode_of_transport":"air"}"}],';

我想找到所有以"{"开头并以"}"结尾的模式。

我正在尝试这个:

preg_match_all( '/"('{.*'})"/', $json, $matches );
print_r($matches);

它给了我一个输出:

Array
(
    [0] => Array
        (
            [0] => "{"mode_of_transport":"air"}"}],"additional_details":"{"mode_of_transport":"air"}"}],"additional_details":"{"mode_of_transport":"air"}"
        )
    [1] => Array
        (
            [0] => {"mode_of_transport":"air"}"}],"additional_details":"{"mode_of_transport":"air"}"}],"additional_details":"{"mode_of_transport":"air"}
        )
)

请参阅数组键 1。它在一个键中提供所有匹配项以及其他详细信息。

我想要一个所有匹配项的数组。喜欢

Array
(
    [0] => Array
        (
            [0] => "{"mode_of_transport":"air"}"}],"additional_details":"{"mode_of_transport":"air"}"}],"additional_details":"{"mode_of_transport":"air"}"
        )
    [1] => Array
        (
            [0] => {"mode_of_transport":"air"},
            [1] => {"mode_of_transport":"air"},
            [2] => {"mode_of_transport":"air"}
        )
)

我应该在我的模式中改变什么。

谢谢

您可以使用:

preg_match_all( '/({[^}]*})/', $str, $matches );
print_r($matches[1]);
Array
(
    [0] => {"mode_of_transport":"air"}
    [1] => {"mode_of_transport":"air"}
    [2] => {"mode_of_transport":"air"}
)