это мой первый пост здесь, так что приветствую всех!
Я пытаюсь написать правило, чтобы просто защитить свой сайт от затопления пользователями, размещающими его контент. Я решил использовать similar_text () функция в PHP для сравнения строк (последняя добавленная строка пользователем и та, которую добавляется в данный момент), вычисление сходства (%) и, если результат слишком высокий (аналог более 90%), скрипт не добавит запись в базу данных.
Вот что у меня есть:
similar_text($last_record, $new_record, $sim);
$similarity = (int) number_format($sim, 0);
if ($similarity < 90)
{
// add the record
}
else
{
// dont add anything
}
Проблема с этим: если ($ сходство < 90). Я форматирую число, а затем преобразовываю его из строкового значения в int, но сценарию все равно.
Когда я использую квоты, это работает: если ($ сходство < «90»). Вопрос в том, почему скрипт не работает, когда я использую значение как целочисленное значение, и он работает, когда я использую его как строку?
number_format
возвращает строку, где вам нужно int. Таким образом, сравнение строк до «90» работает, но сравнение int не удается. Ты можешь использовать int_val
преобразовать в int.
Кроме того, мне интересно, может быть, у вас что-то не так? Я взял ваш пример кода и запустил его локально, и, кажется, он работает нормально даже без замены (int)
за int_val
,
Со следующими значениями:
$last_record = "asdfasdfasdf";
$new_record = "aasdfasdfasdf";
$similarity
является 96
и больше, чем секция триггеров if.
С этими значениями:
$last_record = "asdfasdfasdf";
$new_record = "fffdfasdfasdf";
$similarity
является 80
и меньше, чем секция триггеров if.
Других решений пока нет …