我想做的是搜索一个文件,其中包含多个空格分隔的单词和字符,在多行上,使用包含某个字符串的preg_grep,并存储为变量。然后我想"for 循环"遍历这些匹配的行,并在其中搜索另一个字符串。
例如,假设$c
包含与文件$o
中的变量$a
匹配的所有行(在 Array 中?(,并返回包含该变量的 9 行。 如何
$c = preg_grep("/'b$a'b/", $o);
所以我设定了$max = sizeof($c)
$max = sizeof($c); // In this example contains 9
在这里,我尝试遍历$c
以查找变量$b
,并希望打印匹配的行
for ($i = 0; $i < $max; $i++) {
$st = preg_grep("/'b$b'b/", $c);
echo implode($st, ' ');
}
在第一次搜索中,如果我回显implode($c, ' ')
,我会得到所有 9 个值显示为一个实心字符串。似乎尽管在循环后使用相同的技术,但我没有得到我想要的结果,这是匹配两个变量产生的单行。
此外,我知道可能有更简单的方法可以完成此操作,但按照此示例,我在哪里犯了错误。
编辑如果有帮助,请提供文本文件的示例:
13 04000 Atlanta city GA 394017 +33.762900 -08.4422592
13 56000 North Atlanta CDP PA 27812 0000000147 +33.862550
其中 $c = preg_grep("/''b$a''b/", $o(; 将匹配两行理想情况下,如果 $b= PA,第二个preg_grep会大喊:
13 56000 North Atlanta CDP PA 27812 0000000147 +33.862550
假设$o
是一个行数组:
$result = preg_grep("/'b$b'b/", preg_grep("/'b$a'b/", $o));
echo implode(" ", $result);
这将给出一个$o
元素数组,这些元素与$a
和$b
匹配