我不知道为什么,但当我执行脚本时,它不能正确地显示行。它只给出变量行的最后一行,但在它下面没有输入。我是不是忽略了什么?
<?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:
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:
TOI00123-11-134-B
TOI00112-54-980-B输出:
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 发布于 2016-03-17 10:45:15
您的问题是,尽管在$matches中存储结果,但每次循环迭代时都会覆盖$matches。
你应该沿着这条路线走下去:
<?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);
?>另外,请注意正则表达式的更改--我不是正则表达式中最好的,但是在测试原始表达式之后,它与锚点^不匹配。
https://stackoverflow.com/questions/36057224
复制相似问题