我想要做的是搜索包含的文件;多行空格分隔的单词和字符,在多行上,使用preg_grep,包含某个字符串,并存储为变量。我想然后" for循环"通过这些匹配的行,并搜索另一个字符串。
为了便于举例,假设$c
包含与变量$a
匹配的所有行(在数组中?),在文件$o
中,并返回包含该变量的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(&#34; / \ b $ a \ b /&#34;,$ o);会匹配两条线 理想情况下,如果$ b = PA,那么第二个preg_grep就会出现:
13 56000 North Atlanta CDP PA 27812 0000000147 +33.862550
答案 0 :(得分:2)
假设$o
是一个行数组:
$result = preg_grep("/\b$b\b/", preg_grep("/\b$a\b/", $o));
echo implode(" ", $result);
这将为$o
提供一系列与$a
和$b
匹配的元素。