首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >preg_match_all没有给出结果

preg_match_all没有给出结果
EN

Stack Overflow用户
提问于 2016-03-17 10:03:13
回答 1查看 129关注 0票数 2

我不知道为什么,但当我执行脚本时,它不能正确地显示行。它只给出变量行的最后一行,但在它下面没有输入。我是不是忽略了什么?

代码语言:javascript
复制
<?php
    $stop = '06BAH';
    $input = file_get_contents('File1.txt'); 
    $lines = file('File2.txt'); 

    for ($i=0; $i < count($lines); $i++) { 
        preg_match_all("/^($lines[$i].*)$stop/msU", $input, $matches);
    }
?>

File1:

代码语言:javascript
复制
06BAH  TOI00123-11-134-B                        OP_SIGNAGE                                       10  
05  6       00132-12-172-A                4                                                                                    PON
05  7       00127-22-683-A                3                                                                                   PON
05  9       00927-62-133-A                11                                                                                    PON
05  18      00227-72-542-A                8                                                                                   PON
06BAH   TOI00877-27-836-C                        OP_SIGNAGE                                      10 
05  122     00238-92-963-A                3                                                                                    PON
05  173     00124-65-832-A                2                                                                                    PON
06BAH   TOI00112-54-980-B                        OP_SIGNAGE                                      10 

File2:

代码语言:javascript
复制
TOI00123-11-134-B
TOI00112-54-980-B

输出:

代码语言:javascript
复制
06BAH   TOI00123-11-134-B                        OP_SIGNAGE                                       10  
05  6       00132-12-172-A                4                                                                                    PON
05  7       00127-22-683-A                3                                                                                   PON
05  9       00927-62-133-A                11                                                                                    PON
05  18      00227-72-542-A                8                                                                                   PON
06BAH   TOI00112-54-980-B                        OP_SIGNAGE                                       10 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-17 10:45:15

您的问题是,尽管在$matches中存储结果,但每次循环迭代时都会覆盖$matches

你应该沿着这条路线走下去:

代码语言:javascript
复制
<?php
$stop = '06BAH';
$input = file_get_contents('file1.txt'); 
$lines = file('file2.txt'); 
$caught = []; 

for ($i=0; $i < count($lines); $i++) { 
    preg_match_all("/(".trim($lines[$i]).".*)".trim($stop)."/msU", $input, $matches);
    foreach($matches as $key => $value) {
        $caught[$i] = $value;
    }
}

var_dump($caught);

?>

另外,请注意正则表达式的更改--我不是正则表达式中最好的,但是在测试原始表达式之后,它与锚点^不匹配。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36057224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档