如何在php中使用preg_match_all使用特殊表达式

时间:2017-02-24 12:22:44

标签: php preg-match preg-match-all

我想preg_match_all()这个:

    if(isset($matches[1])){
        return $matches[1];
    }else{
        return false;
    }
}
$lines = file('jason.txt');
$i=0;
foreach ($lines as $line_num => $line) {
    $str_arr = getInbetweenStrings('"Vehicle":', ',"Buyer":', $line);
    echo '<pre>';
    print_r($str_arr);
}

2 个答案:

答案 0 :(得分:0)

如果字符串是:

"Vehicle": "1992 Macho Camry CE"

这是正则表达式:

preg_match_all("/: \"?([\w ]+)/", $str, $matches,  PREG_PATTERN_ORDER);

然后致电

print_r($matches);

将返回:

Array
(
    [0] => Array
        (
            [0] => : "1992 Macho Camry CE
        )

    [1] => Array
        (
            [0] => 1992 Macho Camry CE
        )

)

要获取字符串,请使用:

$phrase = $matches[1];

修改 由于源数据是json字符串,请使用json_decode函数转换数组中的所有数据:

$str = '[{"Vehicle": "1992 Macho Camry CE"}, {"Vehicle": "2017 OtherCar"}]';
$vehicles = json_decode($str, true);
print_r($vehicles);

Array
(
    [0] => Array
        (
            [Vehicle] => 1992 Macho Camry CE
        )

    [1] => Array
        (
            [Vehicle] => 2017 OtherCar
        )
)

答案 1 :(得分:0)

根据您的评论,您正在解析json文件。

在这种情况下,您不应该使用正则表达式或字符串函数。相反,你应该直接解析json文件。

要在多维数组结构中完成所有操作:

$array = json_decode(file_get_contents('path/to/file.json'), true);