正则表达式,用于匹配查询字符串中的模式

时间:2019-05-09 16:33:47

标签: php regex preg-match preg-match-all

我有一些代码可以创建查询字符串并循环遍历并检查查询字符串。

$pi = An ip defined
$bo = The content of a file.

我正在$bo内搜索并寻找$pi,我想打印出与该字符串匹配的所有行,但是从{{1 }}。

这是$bo中包含的内容:

$bo

2 个答案:

答案 0 :(得分:1)

这是一种通用模式,可用于包含$ip字符串的整行:

$pattern = '/^.*\b' . $ip . '\b.*$/m';

然后,我们可以将此模式与preg_match_all一起使用以查找所有匹配的行:

preg_match_all($pattern, $body, $matches);
print_r($matches[0]);

答案 1 :(得分:0)

我将使用preg_grep()而不是preg_match(),因为它直接返回匹配项,并且不需要构建模式来捕获行。但是,它确实要求输入必须是文件中的行数组,您可以通过file()explode()轻松地做到这一点:

// Read a file directly into an array.
$body = file('/path/to/file');

// Or split an existing big string into an array of lines.
$body = explode("\n", $fileContents);

foreach (preg_grep($ip, $body) as $line) {
    echo $line;
}

或者只是:

echo implode("\n", preg_grep($ip, $body));