【问题标题】:Extraction text php提取文本php
【发布时间】:2014-02-19 16:30:49
【问题描述】:

我有一个名为“test.txt”的文件,其内容如下:

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

我想要一个提取数据的函数,我想要为“30s-2mn”和“0s-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 function text-extraction


    【解决方案1】:

    首先在您的 PHP 中有一个错误,第二个 preg_matchyou 再次使用 $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)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多