嗨,我已经做了这个项目近一个月了。无论如何我可以在搜索到的字符串列表中存储下一个字符串的值吗?
例如:
Deviceid.txt内容为:
Created:21/07/2016 1:50:53; Lat:30.037853; Lng:31.113798; Altitude:79; Speed:0; Course:338; Type:Gps;
Created:21/07/2016 1:49:53; Lat:30.037863; Lng:31.113733; Altitude:60; Speed:0; Course:338; Type:Gps;
这是我的示例php编码
$file_handle = fopen("data/deviceid.txt", "r");
while (!feof($file_handle)) {
$line = fgets($file_handle);
array_push($a,$line);
}
$searchword = 'Lat';
$matches = array_filter($a, function($var) use ($searchword) {
return preg_match("/\b$searchword\b/i", $var);
});
print_r($matches);
fclose($file_handle);
匹配数据: [0] = 30.037853 [1] = 30.037863
答案 0 :(得分:1)
使用下面的代码解析文件后,您可以使用array_column(php v5.5.0 +)从特定键获取所有值,如下所示:
array_column($parsed, 'Lat');
输出:
Array
(
[0] => 30.037853
[1] => 30.037863
)
在行动here中查看。
以下是解析文件内容的代码:
// $a = each line of the file, just like you're doing
$a = array_filter($a); // remove empty lines
$parsed = array();
foreach($a as $v1){
$a1 = explode(';', $v1);
$tmp = array();
foreach($a1 as $v2){
$t2 = explode(':', $v2);
if(count($t2) > 1){
$tmp[trim(array_shift($t2))] = trim( implode(':', $t2) );
}
}
$parsed[] = $tmp;
}
这是$parsed
:
Array
(
[0] => Array
(
[Created] => 21/07/2016 1:50:53
[Lat] => 30.037853
[Lng] => 31.113798
[Altitude] => 79
[Speed] => 0
[Course] => 338
[Type] => Gps
)
[1] => Array
(
[Created] => 21/07/2016 1:49:53
[Lat] => 30.037863
[Lng] => 31.113733
[Altitude] => 60
[Speed] => 0
[Course] => 338
[Type] => Gps
)
)
请参阅操作中的代码here。
答案 1 :(得分:0)
我编写了一个快速正则表达式,可以帮助您从每一行中提取字段名称和值。
你可以试试这个:
$re = "/((?P<fieldname>[^\\:]*)\\:(?P<fieldvalue>[^\\;]*); *)/";
$str = "Created:21/07/2016 1:50:53; Lat:30.037853; Lng:31.113798; Altitude:79; Speed:0; Course:338; Type:Gps;";
preg_match_all($re, $str, $matches);
print_r
$matches
来检查结果。
希望这有帮助。
答案 2 :(得分:0)
在array_filter
之后,迭代您的匹配并对每一行应用更具体的正则表达式:
$lats = array();
foreach ($matches as $line)
{
$match = array();
preg_match("/\b$searchword:([\d\.]+);/i", $var, $match);
$lats[] = $match[1];
}
print_r($lats);
变量$match
将使用索引0 and the parenthesized match at index 1处的完整正则表达式匹配来填充。