Фильтр ненужных слов на PHP

Форум для тех кто начинает осваивать язык php.
Domeenor
Сообщения: 10
Зарегистрирован: Чт апр 28, 2016 9:03 am

Фильтр ненужных слов на PHP

Сообщение Domeenor » Ср май 11, 2016 4:23 pm

Код: Выделить всё

if (!is_null($user)) {
$steamInfo = $this->steamAuth->getUserInfo();
\DB::table('users')
->where('steamid64', $steamID)
->update(['username' => $steamInfo->getNick(),
'avatar' => $steamInfo->getProfilePictureFull()]);
}
Ребят, помогите чтобы из getNick стирало ненужные слова из массива.

Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2113
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Re: Фильтр ненужных слов на PHP

Сообщение Slash » Ср май 11, 2016 5:13 pm

Опешите подробнее, что именно надо?
Что делает функция getNick?

Код: Выделить всё

if (!is_null($user))
{
    $steamInfo = $this->steamAuth->getUserInfo();
    if (!in_array($steamInfo->getNick(), $nick))
    {
        \DB::table('users')
            ->where('steamid64', $steamID)
            ->update([
                'username' => $steamInfo->getNick(),
                'avatar'   => $steamInfo->getProfilePictureFull()
        ]);
    }
} 
Видимо я не понял задачу, надо удалить из массива или надо проверить если ли ненужные слова в массиве?

Domeenor
Сообщения: 10
Зарегистрирован: Чт апр 28, 2016 9:03 am

Re: Фильтр ненужных слов на PHP

Сообщение Domeenor » Ср май 11, 2016 5:15 pm

Выводит строку ник из массива steamInfo.
Slash писал(а):Видимо я не понял задачу, надо удалить из массива или надо проверить если ли ненужные слова в массиве?
Проверить, а затем удалить.

Аватара пользователя
Slash
Администратор
Сообщения: 2113
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Re: Фильтр ненужных слов на PHP

Сообщение Slash » Ср май 11, 2016 5:31 pm

Тогда надо надо использовать запрос вместо обновления (update) удаление (delete).
Гляньте, как в Вашем движке выполняется запрос на удаление записи? Следует делать по аналогии.

Код: Выделить всё

if (!is_null($user))
{
    $steamInfo = $this->steamAuth->getUserInfo();
    if (in_array($steamInfo->getNick(), $nick))
    {
        \DB::table('users')
            ->where('steamid64', $steamID)
            ->delete([
                'username' => $steamInfo->getNick(),
                'avatar'   => $steamInfo->getProfilePictureFull()
        ]);
    }
}
$nick - массив ненужных слов.

Гляньте, как в Вашем движке выполняется запрос на удаление записи? Следует делать по аналогии.
Например так:

Код: Выделить всё

        \DB::delete('users')
            ->where([
                'username' => $steamInfo->getNick(),
                'avatar'   => $steamInfo->getProfilePictureFull()
        ]);
К сожалению я проверить это не могу.

Domeenor
Сообщения: 10
Зарегистрирован: Чт апр 28, 2016 9:03 am

Re: Фильтр ненужных слов на PHP

Сообщение Domeenor » Ср май 11, 2016 5:34 pm

Отфильтровать до выполнения запроса ни как?

Аватара пользователя
Slash
Администратор
Сообщения: 2113
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Re: Фильтр ненужных слов на PHP

Сообщение Slash » Ср май 11, 2016 5:48 pm

Можно. Например имеем массив ненужных слов:

Код: Выделить всё

# Список ненужных слов
$words = array( 
    'Слово-1',
    'Слово-2',
    'Слово-3',
    'Слово-4',
    'Слово-5'
);
Проверяем каждое слово через цикл и создаем новый массив. Если совпадений не найдено, то загоняем в массив:

Код: Выделить всё

$norm = array();
foreach ($nick as $value)
{
    if (!in_array($value, $words))
    {
        $norm[] = $value;
    }
} 
Тут массив: $nick - это список всех слов, которые надо отфильтровать.
Массив $norm - это уже отфильтрованный список слов, без ненужных слов.

Еще один вариант, сделать так:

Код: Выделить всё

$steamInfo = $this->steamAuth->getUserInfo();
if (!is_null($user) && !in_array($steamInfo->getNick(), $nick))
{
    \DB::table('users')
        ->where('steamid64', $steamID)
        ->update([
            'username' => $steamInfo->getNick(),
            'avatar'   => $steamInfo->getProfilePictureFull()
    ]);
}
Тут: $nick - массив ненужных слов.

Что получается?

Аватара пользователя
Scorpion
Сообщения: 56
Зарегистрирован: Вт апр 05, 2016 7:36 am
Благодарил (а): 9 раз
Поблагодарили: 5 раз

Re: Фильтр ненужных слов на PHP

Сообщение Scorpion » Чт май 12, 2016 7:15 am

Domeenor, что за движок? Где его можно скачать?
Я скачаю, посмотрю, как там реализован запрос на удаление и постараюсь написать Вам код, как надо это делать.

Ответить Пред. темаСлед. тема

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость