我想从可填写的pdf中提取可用字段作为数组。
类似于:array('firstname','secondname','address');
我不需要这些字段的值,如果它们已被填充。
使用PHP最简单的方法是什么?
答案 0 :(得分:2)
在“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";
}
?>
答案 1 :(得分:1)
我赞成了穆雷的回答,因为她是在欧内斯特,我很确定他是对的,在php 5.3之前
可悲的是,pecl fdf已不复存在。值得庆幸的是,one "noah" made a comment on the php documentation使用preg_match_all正则表达式来解决问题。为清晰起见,此处略作修改。诺亚万岁。
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;
}
我希望有人会因为缺乏真正的fdf支持而得到补偿并解决这个问题。
因为如果您正在阅读这个问题,我们可能都在相同的基本工作流程之后,那么您应该知道我所遵循的基本工作流程是:
HTH
-FT
答案 2 :(得分:1)
如果您控制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然后 - 这对我来说更简单。
答案 3 :(得分:0)
我从提交到我的服务器的PDF中获得了正常的帖子,但是没有在$ _POST数组中。你只需要从php:// input:
解析它$allVars = file_get_contents("php://input");
parse_str($allVars, $myPost);
foreach($myPost as $key => $value) {
$allKeys[] = $key;
}