【发布时间】:2015-02-23 20:25:17
【问题描述】:
文件 1 值:
....
Group 2012_fln
{
vnum 103
Type mixed
1 1167 1 2
2 7731 1 2
3 3561 1 2
4 8613 1 3
}
Group 7612_edb
{
vnum 104
Type other
1 6312 1 90
2 5241 5 45
....
文件 2 值:
....
1167 ºÎȰÀı´Ş°¿
7731 ÀÌÆÄÀÇ
3561 »¡°£»ö
....
所有值都已用 TAB 分隔。顺便说一句,这两个文件中都有数千个值。
所以这是我的问题:
我需要检查文件 1 上的值。文件 2 中是否存在。 如果文件 2 的值中不存在 1167 或 7731 或 3561 或 8613 值。
我需要在每个小组中都这样做。如果不存在,我需要一个错误回显,例如;在 xxx 组中,xxx vnum 不存在。并继续到文件 1 的结尾。
我试图爆炸,但文件 1 中有很多语法,如 Group、{}、vnum、type 等。我知道,这很复杂,这就是我在这里写的原因。
我可以像这样解析我的 File 2 值:
$line = trim($line);
$token = explode("\t", $line);
if ("" == $token[0] or "VNUM" == $token[0])
continue;
$vnum = $token[0];
$entry_name = $token[1];
所以,我真的需要一个很大的帮助,我在这个问题上花了我最后两天......我希望我解释得当。
【问题讨论】:
-
你只关心匹配行与 4 个制表符分隔的数字吗?
-
我只需要在第二个标签中获取数字;喜欢:1 1167 1 2,“1167”。
-
你可以连续做两次爆炸。例如:第一个在
'}'上爆炸,第二个在换行符PHP_EOL上。现在每个组都有一个数组。使用substr()从除前五行之外的所有行中获取您想要的数字,您就完成了。
标签: php arrays file parsing explode