正则表达式表示双方括号之间的文本


Regex for text between double square brackets

这是我的示例文本:

text text text
[[{"fid":"3228","view_mode":"full","fields":{"format":"full","field_file_image_alt_text[und][0][value]":"text text text","field_file_image_title_text[und][0][value]":"","field_file_image_gallery_content[und][0][value]":"","field_file_image_gallery_content[und][0][format]":"full_html"},"type":"media","link_text":null,"attributes":{"alt":"text text","height":"647","width":"421","class":"media-element file-full"}}]]

我想提取双括号之间的文本:[[]]

这是我的方法:

preg_match_all("/'[[^']]*']/", $txt, $matches);

但它仅适用于单括号之间的文本,例如 [] .

我的正则表达式必须是什么样子,才能提取双括号之间的文本?

试试这个 - 第一场比赛:

if (preg_match('/'['[(.*?)']']/i', $buffer, $regs)) {
    $result = $regs[1];  // Matched text
} else {
    $result = "";
}

或者这个 - 迭代所有匹配项:

preg_match_all('/'['[(.*?)']']/i', $buffer, $regs, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($regs[1]); $i++) {
    // Matched text = $regs[1][$i];
}

如果你没有真正的论据来处理这样的数据,请按照鲍罗丁的回答并使用json_decode。这可能会更好。

您正在尝试使用正则表达式处理 JSON 数据。这充满了危险。

使用json_decode