Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Svarog on April 29, 2018, 01:32:53 PM
-
Приветствую уважаемых пользователей Кликермана и прошу небольшой помощи)
На входе имеем капчу из арифметического примера состоящего из двух одно или двухзначных чисел вида:
1+4=? или 2+45=? или 23-1=? или 99+57=?
С помощью алгоритма уважаемого dramsterа капча замечательно распознается (мой земной поклон dramsterу за замечательно работающий скрипт), на выходе имеем строку:
$all_str= 1+4=? или 2+45=? или 23-1=? или 99-57=?
то есть строковую переменную...
И собственно, сам вопрос. Как мне понять (в арифметическом смысле) знак в примере, плюс или минус и решить эту капчу?
Фильтруя сию переменную, получаю чистый пример:
$all_str = STRFILTER($all_str, "=?", 0)
4+67 или 45-23 или 67-2... и т.д.
снова фильтрую строку, получаю переменную знака: плюс или минус:
$ZN= STRFILTER($all_str, "-+", 1)
далее фильтрую получившийся результат по знаку $ZN, вношу данные в массив и имею два числа в массиве:
strseparate($all_str, $ZN, $arr)
И вот тут у меня случился глюк, не могу понять как решить этот пример, складывать или вычитать? Т.е. проблема с определением знака.
Решение сканировать картинку знака - не комильфо... кажется мне, что есть более элегантное решение, а вот найти его не могу, так как в строковых переменных пока еще не рублю). И вот собственно прошу помощи у более опытных товарищей)
-
$all_str= "99+57=?"
$all_str = STRFILTER($all_str, "=?", 0)
IF(STRPOS($all_str, "+") > 0)
STRSEPARATE($all_str, "+", $arr)
$all_str = $arr[0]+$arr[1]
ELSE
STRSEPARATE($all_str, "-", $arr)
$all_str = $arr[0]-$arr[1]
END_IF
UNDEFINE($arr)
LOGWRITE ($all_str)
HALT
-
Да да да!!!
Вот на что ума у меня и не хватило))) сравнить с нулем!
Спасибо уважаемый наш Oraven. Все чудненько работает)