如何使用PHP删除不包含指定字符串的行?

时间:2019-02-21 23:02:00

标签: php php-curl

我有以下文本块,在其自己的行中包含名称:

Sarah Jane Smith
Archie Jones
Micky Smith
Rose Tyler
Harriet Jones
Jack Harkness
John Smith
Martha Jones
Donna Noble

使用PHP,我要删除所有不包含Jones的行,而保留包含Jones的行,如下所示:

Archie Jones
Harriet Jones
Martha Jones

有几个答案显示了如何删除包含单词的行,但没有答案提供了删除所有不包含键串的方法的方法。

2 个答案:

答案 0 :(得分:3)

我这样做的方法是将文本块拆分成一个数组,每行都有一个条目:

$lines = explode(PHP_EOL, $text);

然后过滤掉不包含所需名称的行:

$remaining = array_filter($lines, function($line) {
     return strpos($line, 'Jones') !== false;
});

然后您可以使用所需的值重新加入数组

echo implode(PHP_EOL, $remaining);

答案 1 :(得分:0)

您可以使用正则表达式匹配 do 包含Jones的所有行,然后组合匹配项。

preg_match_all('/.*Jones.*/m', $text, $matches);
echo implode("\n", $matches[0]);