【问题标题】:find failed rows from string using preg_match PHP使用 preg_match PHP 从字符串中查找失败的行
【发布时间】:2012-12-02 03:01:55
【问题描述】:

我需要在 PHP 中使用 preg_match 编写正则表达式来执行下一步:

我确实有这样的字符串:

测试1:好的
测试2:好的
测试3:失败
测试4:进度
测试5:好的

所以我需要找到不正常的行..
测试3:失败
测试4:进度

所以我想我必须检查 :\r\n (\n) 之间的字符串 if != OK,如何使用 preg_match 执行此操作?

非常感谢您的帮助!

【问题讨论】:

    标签: php regex


    【解决方案1】:

    为什么要使用正则表达式?字符串函数应该就可以了;正则表达式更像是最后的手段。

    $lines = explode("\n", str_replace("\r\n", "\n", $lines));
    $failed = array();
    
    foreach ($lines as $line) {
        if (strpos($line, 'OK') === false) {
            $failed[] = $line;
        }
    }
    

    【讨论】:

    • 怎么样?您可以直接过滤到哪些行失败。
    【解决方案2】:

    preg_match_all('/test\d+:(?!OK)/', $allrows, $rowsNotOk)

    【讨论】:

    • preg_match_all('/test\d+:(?!OK)/', $allrows, $rowsNotOk), 我可以做类似 preg_match_all('/:(?!OK)/', $ allrows, $rowsNotOk),不想在行的开头绑定到测试。可能是其他类似 1t:OK
    • 是的,它完全有效。但我不知道你想在数组中存储什么。
    • 我想存储 之后没有 OK 的行:
    • preg_match_all('/^.*?(?=:(?!OK$))/', $allrows, $rowsNotOk) 将存储不以“OK”结尾的行名.
    • 对我不起作用。获取数组([0] => 数组([0] => test1))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多