PHPと正規表現を使用してFDFファイルを解析しようとしています。しかし、私は正規表現について頭を悩ませることができません。ファイルを解析して配列を生成するのに行き詰まっています。
%FDF-1.2
%âãÏÓ
1 0 obj
<<
/FDF
<<
/Fields [
<<
/V (email@email.com)
/T (field_email)
>>
<<
/V (John)
/T (field_name)
>>
<<
/V ()
/T (field_reference)
>>]
>>
>>
endobj
trailer
<<
/Root 1 0 R
>>
%%EOF
現在の関数 (ソース: http://php.net/manual/en/ref.fdf.php )
function parse2($file) {
if (!preg_match_all("/<<\s*\/V([^>]*)>>/x", $file,$out,PREG_SET_ORDER))
return;
for ($i=0;$i<count($out);$i++) {
$pattern = "<<.*/V\s*(.*)\s*/T\s*(.*)\s*>>";
$thing = $out[$i][1];
if (eregi($pattern,$out[$i][0],$regs)) {
$key = $regs[2];
$val = $regs[1];
$key = preg_replace("/^\s*\(/","",$key);
$key = preg_replace("/\)$/","",$key);
$key = preg_replace("/\\\/","",$key);
$val = preg_replace("/^\s*\(/","",$val);
$val = preg_replace("/\)$/","",$val);
$matches[$key] = $val;
}
}
return $matches;
}
結果:
Array
(
[field_email)
] => email@email.com)
[field_name)
] => John)
[field_reference)
] => )
)
)
and new 行を終了するのはなぜですか? この問題は、正規表現を理解している人にとっては些細なことです。ですから、助けていただければ幸いです。