Аргумент в сообщении

171
14 октября 2018, 00:10

Как это реализовать?

'Тики, переверни (предложение)' => utf8_strevv("предложение")

Нужно как-нибудь взять предложение после слова "переверни" и внести его в utf8_strrev()

Код:

<?php
if (!isset($_REQUEST)) {
    return;
}
$confirmationToken = 'скрыл';
$token = 'скрыл';
$secretKey = 'скрыл';
$data = json_decode(file_get_contents('php://input'));
if(strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, 'confirmation') !== 0)
    return;

switch ($data->type) {
    case 'confirmation':
        echo $confirmationToken;
        break;
    case 'message_new':
        $user_id = $data->object->from_id;
        $user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&access_token=$token&v=5.80"));
        $user_name = $user_info->response[0]->first_name;
        $message = $data->object->text;
        $url = 'https://vk.com/foaf.php?id='.$user_id;
        $file = file_get_contents($url);
        preg_match_all('#<ya:created dc:date="(.*)"/>#U', $file, $out, PREG_SET_ORDER);
        if (isset($out[0])) {
            $date = $out[0][1];
            $dt = new DateTime($date);
        }
        $random_words = array (
            'Орёл',
            'Решка'
    );
        $random_word = $random_words[array_rand($random_words)];
        function utf8_strrev($str)
        {
            preg_match_all('/./us', $str, $ar);
            return join('', array_reverse($ar[0]));
        }
        $messages_array = [
            'Тики, хелп' => "
Answer 1

Вся ваша реализация далеко не идеальна, рекомендую избавляться от хранения команда - ответ в массиве.

Но если для вас это удобно, этот вариант-велосипед должен подойти вам:

Короткий идентичный массив команд:

$messages_array = [
    'Тики, привет' => 'Привет',
    'Тики, переверни' => 'Введите текст!',
    'Тики, как дела?' => 'Хорошо'
];

Сообщение, которое приходит боту:

$message = 'Тики, переверни предложение'; 

Проход циклом по командам, если в $message есть начало команды, которая содержится в ключе массива $messages_array, то выполняются условия выполнения функции utf8_strrev:

foreach ($messages_array as $k => $v)
{
    if ($message == $k)
        $otvet = $v;
    elseif (preg_match("/$k/", $message) && preg_match("~$k\s(.*)~", $message, $match))
        $otvet = (!empty($match[1])) ? utf8_strrev($match[1]) : $v;
}

Далее используем $otvet по назначению для отправки пользователю.

READ ALSO
Как преобразовать UNIX время в дату

Как преобразовать UNIX время в дату

У меня в базе есть значение с UNIX временем, например: 1533414201

184
Проверка по БД и сделать элемент неактивным.

Проверка по БД и сделать элемент неактивным.

есть тег select с данными записи по времени, как сделать проверку из БД? если время занято, то делать поле неактивным

194
Uncaught ReferenceError: $ is not defined

Uncaught ReferenceError: $ is not defined

ну и подключить jQuery в <head>:

246
Как сделать приведение к типу int (*)[]

Как сделать приведение к типу int (*)[]

У меня есть класс с матрицей который вызывает другую функцию и туда её передает

194