Jahak, можно написать несколько вариантов и замерить
Koenig, Хотя мой вариант хоть и ищет определенное слово по другому чем у тебя, мне кажется он будет медленнее чем на регулярке. Все из-за того, что я не очень хорошо дружу с ними или не хочу дружить
Jahak, тут надо проверять, ещё зависит от сложности регулярки
дружить с ними не нужно прям очень, но знать основы придётся
# Koenig (10.04.2016 / 21:44)
Sitego,
<?php
$file = 'file.txt';
$lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$str = 'delete this';
$array = array();
foreach($lines as $line) {
if (!pr
Спасибо. Я пошёл немного другим путём, но твой вариант будет лучше, для моих целей.
А несколько вхождений как-то можно удалять? Например, удалять все строки, где встречаются слова "delete" и "this" по отдельности, а не фразой?
Sitego, можно опять те регуляркой
или все же мутить другой вариант с поиском
Koenig, улучшил код. Теперь поиск идет так же как и у тебя, плюс еще удаляет все строки, где встречаются определенные слова, например "delete" и "this" по отдельности
Sitego,
Попробуй код: (+/-)
<?php
//определенное слово, можно в виде массива если несколько или в виде строки, если слово одно
$search = ['delete', 'this'];
//путь к файлу
$filename = 'lol.txt';
//читает содержимое файла и помещает его в массив
$file = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
//фильтруем элементы массива с помощью функции поиска определенного слова
$file = array_filter($file, function($line) use ($search) {
return search($search, $line) !== true;
});
//пишем строки уже в новый файл без определенных(ого) слов(а)
file_put_contents('new_' . $filename, implode(PHP_EOL, $file));
/**
* Функция поиска определенного слова
* @param array|string $search Определенные слова или одно слово в виде строки
* @param string $string Строка в которой производится поиск определенного слова
* @return boolean
*/
function search($search, $string)
{
if (is_string($search)) {
$search = [$search];
}
foreach ($search as $s) {
if (mb_strpos($string, $s) !== false) {
return true;
}
}
return false;
}
Jahak, работает, спасибо
.gif)
C меня плюс позже, а то на сегодня лимит кармических плюсов закончился
Есть ли для регулярных выражений в php возможность использовать логические конструкции, как в perl например? Ну чтобы, допустим, удалить что-то, что не попадает под определённое условие.
Sitego, preg_replace_callback?
Короче вот, кури:
http://php.net/manual/ru/ref.pcre.php