提取文本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) 
+0

非常感谢您的意见! – user3323019

+0

不客气。 – idmean

+0

你可以看看这个:http://stackoverflow.com/questions/21887606/extract-file-in-php-and-display-content-in-chart 非常感谢 – user3323019