提取文本PHP
问题描述:
我有这样一个文件名为它具有以下内容“的test.txt”:提取文本PHP
BEGIN_SESSION 7
1h+ 47
30mn-1h 20
15mn-30mn 16
5mn-15mn 43
2mn-5mn 29
30s-2mn 35
0s-30s 170
END_SESSION
,我想那是提取数据的功能,我想为“30秒,200万“和‘0-30S’是其添加例如看重它会在年底‘35 + 170 = 205’ 我也试过,但它似乎不工作:
preg_match("/BEGIN_SESSION(.*)END_SESSION/is", $test, $matches);
$session = $matches[0] ;
preg_match('/^30s-2mn ([0-9]{14}) /ms', $test, $matches);
$data= $matches;
var_dump($data);
我的代码有什么问题?
答
首先在您的PHP中有一个错误,您的第二个preg_match
您再次使用$test
作为主题而不是$session
。
其次,RegEx无法匹配。插入符号(^
)告诉PHP在测试主题的开始处开始搜索,但没有30s...
,这个30s...
位于测试字符串中的某处。所以删除。然后你告诉PHP有0-9的14个数字,但你只是在寻找两个。因此,一个工作正则表达式是:
/30s-2mn ([0-9]{2})/ms
更正:
preg_match("/BEGIN_SESSION(.*)END_SESSION/is", $test, $matches);
$session = $matches[0] ;
preg_match('/30s-2mn ([0-9]{2})/ms', $session, $matches);
$data= $matches;
var_dump($data);
什么打印出:
array(2) { [0]=> string(10) "30s-2mn 35" [1]=> string(2) "35" }
现在做一些数学:
preg_match("/BEGIN_SESSION(.*)END_SESSION/is", $test, $matches);
$session = $matches[0];
preg_match('/30s-2mn ([0-9]{2})/ms', $session, $matches);
$a = $matches[1];
preg_match('/0s-30s ([0-9]{3})/ms', $session, $matches);
$b = $matches[1];
var_dump($a+$b);
打印:
int(205)
非常感谢您的意见! – user3323019
不客气。 – idmean
你可以看看这个:http://stackoverflow.com/questions/21887606/extract-file-in-php-and-display-content-in-chart 非常感谢 – user3323019