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

294K
.
(\/)____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