Если текст в указанном имени пользователя, то не вставляйте для этого имени пользователя

Моя система упоминаний нуждается в чем-то. Я создал следующий код для сохранения упомянутого пользователя с помощью php и mysql.

Текст таков:

$text = 'Hi @john ! Need help @stack .';

Сохранение запроса

$mention_regex = '/@([A-Za-z0-9_]+)/i';
preg_match_all($mention_regex, $text, $matches);
foreach ($matches[1] as $match) {
$match = mysqli_real_escape_string($db, $match);
}
$mentionTime = time();
$mention_sql = mysqli_query($db,"INSERT INTO mentions (m_uid_fk,
m_status,
m_time )
SELECT user_id, '$uid','$mentionTime'
FROM users
WHERE user_name IN ('" .implode("','", $matches[1]). "')")
or die(mysqli_error($db));

Мой вопрос: Если в тексте указано имя пользователя, как, например, @john тогда не сохраняйте таблицу упоминаний для этого имени пользователя.

Есть ли способ сделать это с моим запросом?

-1

Решение

Ты можешь использовать StrPos проверить наличие определенного текста в строке:

$search = '@john';
$string = 'Hi @john ! Need help @stack .';

if (!strpos($string, $search)) {
# run save code
}

альтернативный ответ

использование array_filter

$users = ['@john', '@trey', '@azzo'];

$data = array_filter($users, function($el)
{
return ($el !== '@john');
});

echo '<pre>'. print_r($data, 1) .'</pre>';

с array_filter Вы можете указать возвращаемые значения, используя функцию, которая проверяет элемент на соответствие условию. Тогда просто foreach тот $data массив и запустить ваш код только для этого.

например

foreach ($data as $item)
{
# run save code
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector