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

Php 双方括号之间文本的正则表达式,php,regex,preg-match-all,Php,Regex,Preg Match All,这是我的示例文本: 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]":"","fi

这是我的示例文本:

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);
但它只适用于单括号之间的文本,如
[
]


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

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


使用

尝试此-第一次匹配:

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];
}
preg\u match\u all('/\[\[(.*?\]\]\]]/i',$buffer,$regs,preg\u PATTERN\u ORDER);
对于($i=0;$i

如果您没有实际的参数来处理这样的数据,请遵循Borodin的答案并使用json\u decode。这可能会更好。

正则表达式不应该是
/\[\[(.*)\]\]//i
?这被否决了。我不得不提高投票率,以使其达到0。我测试了这个,它工作顺利。不管是谁投了这样的反对票,都不会帮助任何人,事实上,这让我离开了一分钟。这非常具有破坏性。干得好,顺便说一句,男人。这是一个完美的答案;老实说,wtf?