Различные вопросы по PHP и MySQL

256K
.
(\/)____o_O____(\/)

Jahak, можно написать несколько вариантов и замерить

.
Jahak

Koenig, Хотя мой вариант хоть и ищет определенное слово по другому чем у тебя, мне кажется он будет медленнее чем на регулярке. Все из-за того, что я не очень хорошо дружу с ними или не хочу дружить

.
(\/)____o_O____(\/)

Jahak, тут надо проверять, ещё зависит от сложности регулярки
дружить с ними не нужно прям очень, но знать основы придётся

.
Enter нажат, к чему теперь рыданья…
# 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" по отдельности, а не фразой?
.
(\/)____o_O____(\/)

Sitego, можно опять те регуляркой
или все же мутить другой вариант с поиском

.

strpos

.
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;
}
.
Enter нажат, к чему теперь рыданья…

Jahak, работает, спасибо
C меня плюс позже, а то на сегодня лимит кармических плюсов закончился

.
Sitego
Enter нажат, к чему теперь рыданья…

Есть ли для регулярных выражений в php возможность использовать логические конструкции, как в perl например? Ну чтобы, допустим, удалить что-то, что не попадает под определённое условие.

.

Sitego, preg_replace_callback?

Короче вот, кури: http://php.net/manual/ru/ref.pcre.php

Всего: 7969