我有以下文本块,在其自己的行中包含名称:
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
有几个答案显示了如何删除包含单词的行,但没有答案提供了删除所有不包含键串的方法的方法。
答案 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]);