如何使用 PHP 删除不包含指定字符串的行?
How do I delete lines using PHP that do NOT contain a designated string?
我有以下文本块,其中各行包含名称:
Sarah Jane Smith
Archie Jones
Micky Smith
Rose Tyler
Harriet Jones
Jack Harkness
John Smith
Martha Jones
Donna Noble
使用PHP,我想删除所有不包含琼斯的行,保留包含琼斯的行,如下:
Archie Jones
Harriet Jones
Martha Jones
有几个答案显示如何删除包含单词的行,但没有答案提供删除所有不包含关键字符串的行的方法。
我这样做的方法是将文本块拆分为一个数组,每行都有一个条目:
$lines = explode(PHP_EOL, $text);
然后过滤掉不包含你想要的名字的行:
$remaining = array_filter($lines, function($line) {
return strpos($line, 'Jones') !== false;
});
然后你可以用你想要的值重新加入数组
echo implode(PHP_EOL, $remaining);
您可以使用正则表达式来匹配 包含琼斯的所有行,然后合并这些匹配项。
preg_match_all('/.*Jones.*/m', $text, $matches);
echo implode("\n", $matches[0]);
我有以下文本块,其中各行包含名称:
Sarah Jane Smith
Archie Jones
Micky Smith
Rose Tyler
Harriet Jones
Jack Harkness
John Smith
Martha Jones
Donna Noble
使用PHP,我想删除所有不包含琼斯的行,保留包含琼斯的行,如下:
Archie Jones
Harriet Jones
Martha Jones
有几个答案显示如何删除包含单词的行,但没有答案提供删除所有不包含关键字符串的行的方法。
我这样做的方法是将文本块拆分为一个数组,每行都有一个条目:
$lines = explode(PHP_EOL, $text);
然后过滤掉不包含你想要的名字的行:
$remaining = array_filter($lines, function($line) {
return strpos($line, 'Jones') !== false;
});
然后你可以用你想要的值重新加入数组
echo implode(PHP_EOL, $remaining);
您可以使用正则表达式来匹配 包含琼斯的所有行,然后合并这些匹配项。
preg_match_all('/.*Jones.*/m', $text, $matches);
echo implode("\n", $matches[0]);