ExpressiveInstaller\OptionalPackages::removeLinesContainingStrings PHP Method

removeLinesContainingStrings() public static method

Remove lines from string content containing words in array.
public static removeLinesContainingStrings ( array $entries, string $content ) : string
$entries array Entries to remove.
$content string String to remove entry from.
return string
    public static function removeLinesContainingStrings(array $entries, $content)
    {
        $entries = join('|', array_map(function ($word) {
            return preg_quote($word, '/');
        }, $entries));
        return preg_replace("/^.*(?:" . $entries . ").*\$(?:\r?\n)?/m", '', $content);
    }

Usage Example

 public function testRemoveLastLine()
 {
     $string = "foo\nbar\nbaz\nqux\nquux";
     $actual = OptionalPackages::removeLinesContainingStrings(['quux'], $string);
     $expected = "foo\nbar\nbaz\nqux\n";
     $this->assertEquals($expected, $actual);
 }