入力可能なPDFから配列として使用可能なフィールドを抽出したいと思います。
次のような配列:array('firstname','secondname','address');
これらのフィールドが入力されている場合、それらのフィールドの値は必要ありません。
PHPを使用してそれを行う最も簡単な方法は何ですか?
「fdf_next_field_name」のオンラインドキュメントでは、フィールド名を配列に格納するように変更できる次の例が示されています。
<?php
$fdf = fdf_open($HTTP_FDF_DATA);
for ($field = fdf_next_field_name($fdf); $field != ""; $field = fdf_next_field_name($fdf, $field)) {
echo "field: $field\n";
}
?>
彼女がアーネストにいたので、私はマレーの答えに賛成しました、そして私は彼がphp5.3より前に正しいと確信しています
悲しいことに、peclfdfはもうありません。
ありがたいことに、 1人の「noah」がこの問題に対するpreg_match_all正規表現ソリューションを使用してphpドキュメントにコメントしました。わかりやすくするためにわずかな変更を加えてここに含まれています。長生きするノア。
function parse($text_from_file) {
if (!preg_match_all("/<<\s*\/V([^>]*)>>/x",$text_from_file,$out,PREG_SET_ORDER))
return;
for ($i=0;$i<count($out);$i++) {
$pattern = "<<.*/V\s*(.*)\s*/T\s*(.*)\s*>>";
$thing = $out[$i][2];
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;
}
誰かがphpでの真のfdfサポートの欠如にうんざりしてこれを修正することを期待しています。
この質問を読んでいる場合、私たち全員がおそらく同じ基本ワークフローを実行しているので、私がフォローしている基本ワークフローは次のとおりであることを知っておく必要があります。
HTH
-FT
PDFを制御し、キーだけが必要な場合は、次のように機能します。phpを使用しますが、他のライブラリは使用しません(ホストにライブラリがない場合に適しています)。
PDF送信ボタンをhtmlに設定し、ページをphpコードが実行されるアドレスに設定します。
$q_string = file_get_contents("php://input");
parse_str($q_string , $pdf_array);
$pdfkeys = array_keys($pdf_array);
pdfファイルからのhtmlクエリ文字列は、変数$q_stringに入れられます。次に、$pdf_arrayという配列に解析されます。$ pdf_arrayは、すべてのキーと値を保持します。次に、array_keys()を使用して、必要に応じてすべてのキーを$pdfkeysに配置します。
私はここに来て、PDF値を読み取ってデータベースに入れる方法を探していましたが、最後にもう少し調べてみたところ、上記のことが思い浮かびました。うまくいけば、一部の人々のニーズを満たしています。xfdfも機能しますが、xmlとして解析する必要があります。これは私にとっては簡単でした。
サーバーに送信するPDFから通常の投稿を受け取りますが、$_POST配列にはありません。php:// inputから解析する必要があります:
$allVars = file_get_contents("php://input");
parse_str($allVars, $myPost);
foreach($myPost as $key => $value) {
$allKeys[] = $key;
}